mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-05-29 19:00:40 +02:00
Compare commits
145 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 32747071fe | |||
| 24fa9cde51 | |||
| 372ec2f30f | |||
| fffba037a6 | |||
| 43488147d8 | |||
| 31a31e9922 | |||
| 7af6280b29 | |||
| 40389396e3 | |||
| 21845d501e | |||
| 5f098e11a3 | |||
| d2de0684fb | |||
| eb4723e890 | |||
| 890cc90420 | |||
| 307af9e40a | |||
| 1eeb0b0f5e | |||
| 605ece705e | |||
| 2ae57e83cb | |||
| af72e3f44e | |||
| e2e1c5cff5 | |||
| ed3d58f1fd | |||
| b58f894dc6 | |||
| 2ed7fa44c0 | |||
| 7c3120cd43 | |||
| 2bc5e24e51 | |||
| d3f8a637bc | |||
| b02b6451d2 | |||
| 0b0d760bab | |||
| b38ed37bc5 | |||
| 5d7dd622f5 | |||
| 7e37948616 | |||
| 2afb6b1f5f | |||
| cd54df6f2d | |||
| 3e4ace8993 | |||
| a878af28f1 | |||
| 0a4d4c12b9 | |||
| 9ade58a003 | |||
| 89b2d0118d | |||
| 232d5003b8 | |||
| 133d70d3d1 | |||
| e70608eaaf | |||
| a63367a772 | |||
| baef86b6cb | |||
| 3011b32fa6 | |||
| 910decfe00 | |||
| e600d87968 | |||
| dd82289488 | |||
| 1e816ec80a | |||
| 3b5626cbd1 | |||
| a819ceaa43 | |||
| de28dbb0f0 | |||
| cfb34a4dc3 | |||
| efdcfc192a | |||
| a7856a6671 | |||
| 7b8e3b528a | |||
| cc3244a034 | |||
| 2121a68c82 | |||
| f35002f862 | |||
| 73a992256d | |||
| 9f1098d6b9 | |||
| 2c0936b7e5 | |||
| 5fb717c3fe | |||
| c5f94fb34d | |||
| 29cdec4577 | |||
| 82efd48e53 | |||
| 5a3a0b7e5c | |||
| 41a5900f12 | |||
| 2dbdd02350 | |||
| fa0cde1a4e | |||
| 623d91d26f | |||
| 57200437dc | |||
| 6f4a2b687c | |||
| 8bb40be41c | |||
| 66c1cf2371 | |||
| 4b23836544 | |||
| 585af1270f | |||
| a0cc51b2ec | |||
| 6a5de7d94d | |||
| 6d9687de0b | |||
| e9acf1dd8f | |||
| 698e05bd06 | |||
| 90b3778e36 | |||
| 85a773bc01 | |||
| 355016a7a5 | |||
| f04fcf99b7 | |||
| 0fb389e7e8 | |||
| 63898aeef0 | |||
| 4fdf00d098 | |||
| 025cc585d5 | |||
| 17018d87cd | |||
| 1e5f4f6583 | |||
| a99851cf9b | |||
| 9fb1ad4861 | |||
| 66c3abfe37 | |||
| 8ca64f5820 | |||
| e743821570 | |||
| 5c698d8735 | |||
| 3e5aa90df0 | |||
| b2add14238 | |||
| a052c00aa8 | |||
| 7f343708e0 | |||
| 22e95c7f4a | |||
| 7645153f77 | |||
| 1abfed9abf | |||
| eea0ab009d | |||
| 29446def22 | |||
| 9dce5e9efe | |||
| 695e2cb322 | |||
| b135ec3b15 | |||
| bb3cc5da6c | |||
| ca7fe24a8a | |||
| 483ba74010 | |||
| f2abeff31a | |||
| 666eaff167 | |||
| d72454f854 | |||
| 333aa81923 | |||
| 41b8cfd1e7 | |||
| 1fa7985b01 | |||
| 38392a6322 | |||
| 637c62319b | |||
| f91fe67629 | |||
| 9eb1818a20 | |||
| 50ac679e33 | |||
| 2a463c63b8 | |||
| dce65f2faf | |||
| a053cb3947 | |||
| 2d43072120 | |||
| 70bdee065e | |||
| 95db27a32f | |||
| d6d4e6a102 | |||
| bc0f30fead | |||
| a9a86fc491 | |||
| c3b5f2bf39 | |||
| 19128e5aed | |||
| 9b5c6d3413 | |||
| 73c873a2ad | |||
| 9d2be22a77 | |||
| 6a3d31f37d | |||
| 3be3a3c14b | |||
| a5b0f4efb7 | |||
| 6da50db417 | |||
| a6c1daf902 | |||
| 6a271fb3d7 | |||
| 2cf9a9dd0f | |||
| 64b32316ca | |||
| 0deaabe719 |
@@ -12,7 +12,7 @@ on:
|
|||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
ref:
|
ref:
|
||||||
description: 'Git ref to checkout (branch, tag, or SHA)'
|
description: 'Git ref to checkout'
|
||||||
required: true
|
required: true
|
||||||
default: 'main'
|
default: 'main'
|
||||||
type: string
|
type: string
|
||||||
@@ -29,73 +29,57 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
packages: write # Needed if you switch to GHCR, good practice
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.event.inputs.ref }}
|
ref: ${{ inputs.ref || github.ref }}
|
||||||
if: github.event_name == 'workflow_dispatch'
|
|
||||||
|
|
||||||
- name: Checkout code (non-manual)
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
if: github.event_name != 'workflow_dispatch'
|
|
||||||
|
|
||||||
- name: Log in to Docker Hub
|
- name: Log in to Docker Hub
|
||||||
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
# This action handles all the logic for tags (nightly vs release vs custom)
|
||||||
|
- name: Docker Metadata
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}
|
||||||
|
tags: |
|
||||||
|
# Logic for Push to Main -> nightly
|
||||||
|
type=raw,value=nightly,enable=${{ github.event_name == 'push' }}
|
||||||
|
# Logic for Release -> semver and latest
|
||||||
|
type=semver,pattern={{version}},enable=${{ github.event_name == 'release' }}
|
||||||
|
type=raw,value=latest,enable=${{ github.event_name == 'release' }}
|
||||||
|
# Logic for Manual Dispatch -> custom input
|
||||||
|
type=raw,value=${{ inputs.tag }},enable=${{ github.event_name == 'workflow_dispatch' }}
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v3
|
uses: docker/setup-qemu-action@v3
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
- name: Build and push nightly image
|
- name: Build and push
|
||||||
if: github.event_name == 'push'
|
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./docker/prod/django/Dockerfile
|
file: ./docker/prod/django/Dockerfile
|
||||||
push: true
|
push: true
|
||||||
provenance: false
|
provenance: false
|
||||||
|
# Pass the calculated tags from the meta step
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
build-args: |
|
build-args: |
|
||||||
VERSION=nightly
|
VERSION=${{ steps.meta.outputs.version }}
|
||||||
tags: ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:nightly
|
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
cache-from: type=gha
|
|
||||||
cache-to: type=gha,mode=max
|
|
||||||
|
|
||||||
- name: Build and push release image
|
# --- CACHE CONFIGURATION ---
|
||||||
if: github.event_name == 'release'
|
# We set a specific 'scope' key.
|
||||||
uses: docker/build-push-action@v6
|
# This allows the Release tag to see the cache created by the Main branch.
|
||||||
with:
|
cache-from: type=gha,scope=build-cache
|
||||||
context: .
|
cache-to: type=gha,mode=max,scope=build-cache
|
||||||
file: ./docker/prod/django/Dockerfile
|
|
||||||
push: true
|
|
||||||
provenance: false
|
|
||||||
build-args: |
|
|
||||||
VERSION=${{ github.event.release.tag_name }}
|
|
||||||
tags: |
|
|
||||||
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest
|
|
||||||
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ github.event.release.tag_name }}
|
|
||||||
platforms: linux/amd64,linux/arm64
|
|
||||||
cache-from: type=gha
|
|
||||||
cache-to: type=gha,mode=max
|
|
||||||
|
|
||||||
- name: Build and push custom image
|
|
||||||
if: github.event_name == 'workflow_dispatch'
|
|
||||||
uses: docker/build-push-action@v6
|
|
||||||
with:
|
|
||||||
context: .
|
|
||||||
file: ./docker/prod/django/Dockerfile
|
|
||||||
push: true
|
|
||||||
provenance: false
|
|
||||||
build-args: |
|
|
||||||
VERSION=${{ github.event.inputs.tag }}
|
|
||||||
tags: ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ github.event.inputs.tag }}
|
|
||||||
platforms: linux/amd64,linux/arm64
|
|
||||||
cache-from: type=gha
|
|
||||||
cache-to: type=gha,mode=max
|
|
||||||
|
|||||||
@@ -123,6 +123,7 @@ celerybeat.pid
|
|||||||
|
|
||||||
# Environments
|
# Environments
|
||||||
.env
|
.env
|
||||||
|
.prod.env
|
||||||
.venv
|
.venv
|
||||||
env/
|
env/
|
||||||
venv/
|
venv/
|
||||||
@@ -160,3 +161,7 @@ cython_debug/
|
|||||||
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||||
.idea/
|
.idea/
|
||||||
|
|
||||||
|
node_modules/
|
||||||
|
postgres_data/
|
||||||
|
.prod.env
|
||||||
|
|||||||
Vendored
+8
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"djlint.showInstallError": false,
|
||||||
|
"files.associations": {
|
||||||
|
"*.css": "tailwindcss"
|
||||||
|
},
|
||||||
|
"tailwindCSS.experimental.configFile": "frontend/src/styles/tailwind.css",
|
||||||
|
"djlint.profile": "django",
|
||||||
|
}
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
<a href="#key-features">Features</a> •
|
<a href="#key-features">Features</a> •
|
||||||
<a href="#how-to-use">Usage</a> •
|
<a href="#how-to-use">Usage</a> •
|
||||||
<a href="#how-it-works">How</a> •
|
<a href="#how-it-works">How</a> •
|
||||||
|
<a href="#mcp-server">MCP Server</a> •
|
||||||
<a href="#help-us-translate-wygiwyh">Translate</a> •
|
<a href="#help-us-translate-wygiwyh">Translate</a> •
|
||||||
<a href="#caveats-and-warnings">Caveats and Warnings</a> •
|
<a href="#caveats-and-warnings">Caveats and Warnings</a> •
|
||||||
<a href="#built-with">Built with</a>
|
<a href="#built-with">Built with</a>
|
||||||
@@ -126,6 +127,7 @@ To create the first user, open the container's console using Unraid's UI, by cli
|
|||||||
|
|
||||||
| variable | type | default | explanation |
|
| variable | type | default | explanation |
|
||||||
|-------------------------------|-------------|-----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-------------------------------|-------------|-----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
|
| INTERNAL_PORT | int | 8000 | The port on which the app listens on. Defaults to 8000 if not set. |
|
||||||
| DJANGO_ALLOWED_HOSTS | string | localhost 127.0.0.1 | A list of space separated domains and IPs representing the host/domain names that WYGIWYH site can serve. [Click here](https://docs.djangoproject.com/en/5.1/ref/settings/#allowed-hosts) for more details |
|
| DJANGO_ALLOWED_HOSTS | string | localhost 127.0.0.1 | A list of space separated domains and IPs representing the host/domain names that WYGIWYH site can serve. [Click here](https://docs.djangoproject.com/en/5.1/ref/settings/#allowed-hosts) for more details |
|
||||||
| HTTPS_ENABLED | true\|false | false | Whether to use secure cookies. If this is set to true, the cookie will be marked as “secure”, which means browsers may ensure that the cookie is only sent under an HTTPS connection |
|
| HTTPS_ENABLED | true\|false | false | Whether to use secure cookies. If this is set to true, the cookie will be marked as “secure”, which means browsers may ensure that the cookie is only sent under an HTTPS connection |
|
||||||
| URL | string | http://localhost http://127.0.0.1 | A list of space separated domains and IPs (with the protocol) representing the trusted origins for unsafe requests (e.g. POST). [Click here](https://docs.djangoproject.com/en/5.1/ref/settings/#csrf-trusted-origins ) for more details |
|
| URL | string | http://localhost http://127.0.0.1 | A list of space separated domains and IPs (with the protocol) representing the trusted origins for unsafe requests (e.g. POST). [Click here](https://docs.djangoproject.com/en/5.1/ref/settings/#csrf-trusted-origins ) for more details |
|
||||||
@@ -182,6 +184,10 @@ Check out our [Wiki](https://github.com/eitchtee/WYGIWYH/wiki) for more informat
|
|||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
> Login with your github account
|
> Login with your github account
|
||||||
|
|
||||||
|
# MCP Server
|
||||||
|
|
||||||
|
[IZIme07](https://github.com/IZIme07) has kindly created an MCP Server for WYGIWYH that you can self-host. [Check it out at MCP-WYGIWYH](https://github.com/ReNewator/MCP-WYGIWYH)!
|
||||||
|
|
||||||
# Caveats and Warnings
|
# Caveats and Warnings
|
||||||
|
|
||||||
- I'm not an accountant, some terms and even calculations might be wrong. Make sure to open an issue if you see anything that could be improved.
|
- I'm not an accountant, some terms and even calculations might be wrong. Make sure to open an issue if you see anything that could be improved.
|
||||||
|
|||||||
+21
-7
@@ -11,6 +11,7 @@ https://docs.djangoproject.com/en/5.1/ref/settings/
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
@@ -46,7 +47,7 @@ INSTALLED_APPS = [
|
|||||||
"django.contrib.sites",
|
"django.contrib.sites",
|
||||||
"whitenoise.runserver_nostatic",
|
"whitenoise.runserver_nostatic",
|
||||||
"django.contrib.staticfiles",
|
"django.contrib.staticfiles",
|
||||||
"webpack_boilerplate",
|
"django_vite",
|
||||||
"django.contrib.humanize",
|
"django.contrib.humanize",
|
||||||
"django.contrib.postgres",
|
"django.contrib.postgres",
|
||||||
"django_browser_reload",
|
"django_browser_reload",
|
||||||
@@ -128,6 +129,14 @@ STORAGES = {
|
|||||||
|
|
||||||
WHITENOISE_MANIFEST_STRICT = False
|
WHITENOISE_MANIFEST_STRICT = False
|
||||||
|
|
||||||
|
|
||||||
|
def immutable_file_test(path, url):
|
||||||
|
# Match vite (rollup)-generated hashes, à la, `some_file-CSliV9zW.js`
|
||||||
|
return re.match(r"^.+[.-][0-9a-zA-Z_-]{8,12}\..+$", url)
|
||||||
|
|
||||||
|
|
||||||
|
WHITENOISE_IMMUTABLE_FILE_TEST = immutable_file_test
|
||||||
|
|
||||||
WSGI_APPLICATION = "WYGIWYH.wsgi.application"
|
WSGI_APPLICATION = "WYGIWYH.wsgi.application"
|
||||||
|
|
||||||
|
|
||||||
@@ -289,7 +298,7 @@ STATIC_URL = "static/"
|
|||||||
STATIC_ROOT = BASE_DIR / "static_files"
|
STATIC_ROOT = BASE_DIR / "static_files"
|
||||||
|
|
||||||
STATICFILES_DIRS = [
|
STATICFILES_DIRS = [
|
||||||
ROOT_DIR / "frontend/build",
|
ROOT_DIR / "frontend" / "build",
|
||||||
BASE_DIR / "static",
|
BASE_DIR / "static",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -305,9 +314,11 @@ CACHES = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WEBPACK_LOADER = {
|
DJANGO_VITE_ASSETS_PATH = STATIC_ROOT
|
||||||
"MANIFEST_FILE": ROOT_DIR / "frontend/build/manifest.json",
|
DJANGO_VITE_MANIFEST_PATH = DJANGO_VITE_ASSETS_PATH / "manifest.json"
|
||||||
}
|
DJANGO_VITE_DEV_MODE = DEBUG
|
||||||
|
DJANGO_VITE_DEV_SERVER_PORT = 5173
|
||||||
|
DJANGO_VITE_DEV_SERVER_HOST = "localhost"
|
||||||
|
|
||||||
# Default primary key field type
|
# Default primary key field type
|
||||||
# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field
|
# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field
|
||||||
@@ -354,8 +365,11 @@ ACCOUNT_ADAPTER = "allauth.account.adapter.DefaultAccountAdapter"
|
|||||||
SOCIALACCOUNT_ADAPTER = "allauth.socialaccount.adapter.DefaultSocialAccountAdapter"
|
SOCIALACCOUNT_ADAPTER = "allauth.socialaccount.adapter.DefaultSocialAccountAdapter"
|
||||||
|
|
||||||
# CRISPY FORMS
|
# CRISPY FORMS
|
||||||
CRISPY_ALLOWED_TEMPLATE_PACKS = ["bootstrap5", "crispy_forms/pure_text"]
|
CRISPY_ALLOWED_TEMPLATE_PACKS = [
|
||||||
CRISPY_TEMPLATE_PACK = "bootstrap5"
|
"crispy_forms/pure_text",
|
||||||
|
"crispy-daisyui",
|
||||||
|
]
|
||||||
|
CRISPY_TEMPLATE_PACK = "crispy-daisyui"
|
||||||
|
|
||||||
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
|
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
|
||||||
SESSION_COOKIE_AGE = int(os.getenv("SESSION_EXPIRY_TIME", 2678400)) # 31 days
|
SESSION_COOKIE_AGE = int(os.getenv("SESSION_EXPIRY_TIME", 2678400)) # 31 days
|
||||||
|
|||||||
+25
-42
@@ -1,23 +1,21 @@
|
|||||||
from crispy_bootstrap5.bootstrap5 import Switch
|
from apps.accounts.models import Account, AccountGroup
|
||||||
|
from apps.common.fields.forms.dynamic_select import (
|
||||||
|
DynamicModelChoiceField,
|
||||||
|
DynamicModelMultipleChoiceField,
|
||||||
|
)
|
||||||
|
from apps.common.widgets.crispy.daisyui import Switch
|
||||||
|
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||||
|
from apps.common.widgets.decimal import ArbitraryDecimalDisplayNumberInput
|
||||||
|
from apps.common.widgets.tom_select import TomSelect
|
||||||
|
from apps.currencies.models import Currency
|
||||||
|
from apps.transactions.models import TransactionCategory, TransactionTag
|
||||||
from crispy_forms.bootstrap import FormActions
|
from crispy_forms.bootstrap import FormActions
|
||||||
from crispy_forms.helper import FormHelper
|
from crispy_forms.helper import FormHelper
|
||||||
from crispy_forms.layout import Layout, Field, Column, Row
|
from crispy_forms.layout import Column, Field, Layout, Row
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from apps.accounts.models import Account
|
|
||||||
from apps.accounts.models import AccountGroup
|
|
||||||
from apps.common.fields.forms.dynamic_select import (
|
|
||||||
DynamicModelMultipleChoiceField,
|
|
||||||
DynamicModelChoiceField,
|
|
||||||
)
|
|
||||||
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):
|
class AccountGroupForm(forms.ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -38,17 +36,13 @@ class AccountGroupForm(forms.ModelForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -82,22 +76,16 @@ class AccountForm(forms.ModelForm):
|
|||||||
self.fields["group"].queryset = AccountGroup.objects.all()
|
self.fields["group"].queryset = AccountGroup.objects.all()
|
||||||
|
|
||||||
if self.instance.id:
|
if self.instance.id:
|
||||||
self.fields["currency"].queryset = Currency.objects.filter(
|
qs = Currency.objects.filter(
|
||||||
Q(is_archived=False) | Q(accounts=self.instance.id),
|
|
||||||
)
|
|
||||||
|
|
||||||
self.fields["exchange_currency"].queryset = Currency.objects.filter(
|
|
||||||
Q(is_archived=False) | Q(accounts=self.instance.id)
|
Q(is_archived=False) | Q(accounts=self.instance.id)
|
||||||
)
|
).distinct()
|
||||||
|
self.fields["currency"].queryset = qs
|
||||||
|
self.fields["exchange_currency"].queryset = qs
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.fields["currency"].queryset = Currency.objects.filter(
|
qs = Currency.objects.filter(Q(is_archived=False))
|
||||||
Q(is_archived=False),
|
self.fields["currency"].queryset = qs
|
||||||
)
|
self.fields["exchange_currency"].queryset = qs
|
||||||
|
|
||||||
self.fields["exchange_currency"].queryset = Currency.objects.filter(
|
|
||||||
Q(is_archived=False)
|
|
||||||
)
|
|
||||||
|
|
||||||
self.helper = FormHelper()
|
self.helper = FormHelper()
|
||||||
self.helper.form_tag = False
|
self.helper.form_tag = False
|
||||||
@@ -114,17 +102,13 @@ class AccountForm(forms.ModelForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -162,9 +146,8 @@ class AccountBalanceForm(forms.Form):
|
|||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
"new_balance",
|
"new_balance",
|
||||||
Row(
|
Row(
|
||||||
Column("category", css_class="form-group col-md-6 mb-0"),
|
Column("category"),
|
||||||
Column("tags", css_class="form-group col-md-6 mb-0"),
|
Column("tags"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
Field("account_id"),
|
Field("account_id"),
|
||||||
)
|
)
|
||||||
|
|||||||
+11
-16
@@ -1,14 +1,13 @@
|
|||||||
from crispy_forms.bootstrap import FormActions
|
|
||||||
from django import forms
|
|
||||||
from django.contrib.auth import get_user_model
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
|
||||||
from django.core.exceptions import ValidationError
|
|
||||||
from crispy_forms.helper import FormHelper
|
|
||||||
from crispy_forms.layout import Layout, Field, Submit, Div, HTML
|
|
||||||
|
|
||||||
from apps.common.widgets.tom_select import TomSelect, TomSelectMultiple
|
|
||||||
from apps.common.models import SharedObject
|
from apps.common.models import SharedObject
|
||||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||||
|
from apps.common.widgets.tom_select import TomSelect, TomSelectMultiple
|
||||||
|
from crispy_forms.bootstrap import FormActions
|
||||||
|
from crispy_forms.helper import FormHelper
|
||||||
|
from crispy_forms.layout import HTML, Div, Field, Layout, Submit
|
||||||
|
from django import forms
|
||||||
|
from django.contrib.auth import get_user_model
|
||||||
|
from django.core.exceptions import ValidationError
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
User = get_user_model()
|
User = get_user_model()
|
||||||
|
|
||||||
@@ -39,6 +38,7 @@ class SharedObjectForm(forms.Form):
|
|||||||
choices=SharedObject.Visibility.choices,
|
choices=SharedObject.Visibility.choices,
|
||||||
required=True,
|
required=True,
|
||||||
label=_("Visibility"),
|
label=_("Visibility"),
|
||||||
|
widget=TomSelect(clear_button=False),
|
||||||
help_text=_(
|
help_text=_(
|
||||||
"Private: Only shown for the owner and shared users. Only editable by the owner."
|
"Private: Only shown for the owner and shared users. Only editable by the owner."
|
||||||
"<br/>"
|
"<br/>"
|
||||||
@@ -48,9 +48,6 @@ class SharedObjectForm(forms.Form):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
fields = ["visibility", "shared_with_users"]
|
fields = ["visibility", "shared_with_users"]
|
||||||
widgets = {
|
|
||||||
"visibility": TomSelect(clear_button=False),
|
|
||||||
}
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
# Get the current user to filter available sharing options
|
# Get the current user to filter available sharing options
|
||||||
@@ -73,12 +70,10 @@ class SharedObjectForm(forms.Form):
|
|||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
Field("owner"),
|
Field("owner"),
|
||||||
Field("visibility"),
|
Field("visibility"),
|
||||||
HTML("<hr>"),
|
HTML('<hr class="hr my-3">'),
|
||||||
Field("shared_with_users"),
|
Field("shared_with_users"),
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Save"), css_class="btn btn-primary"),
|
||||||
"submit", _("Save"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
from django import forms, template
|
||||||
|
|
||||||
|
register = template.Library()
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def is_input(field):
|
||||||
|
return isinstance(field.field.widget, forms.TextInput)
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def is_textarea(field):
|
||||||
|
return isinstance(field.field.widget, forms.Textarea)
|
||||||
@@ -11,7 +11,7 @@ def toast_bg(tags):
|
|||||||
elif "warning" in tags:
|
elif "warning" in tags:
|
||||||
return "warning"
|
return "warning"
|
||||||
elif "error" in tags:
|
elif "error" in tags:
|
||||||
return "danger"
|
return "error"
|
||||||
elif "info" in tags:
|
elif "info" in tags:
|
||||||
return "info"
|
return "info"
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
from crispy_forms.layout import Field
|
||||||
|
|
||||||
|
|
||||||
|
class Switch(Field):
|
||||||
|
template = "crispy-daisyui/layout/switch.html"
|
||||||
@@ -1,15 +1,14 @@
|
|||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
from django.forms import widgets
|
from apps.common.functions.format import get_format
|
||||||
from django.utils import formats, translation, dates
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
|
||||||
|
|
||||||
from apps.common.utils.django import (
|
from apps.common.utils.django import (
|
||||||
django_to_python_datetime,
|
|
||||||
django_to_airdatepicker_datetime,
|
django_to_airdatepicker_datetime,
|
||||||
django_to_airdatepicker_datetime_separated,
|
django_to_airdatepicker_datetime_separated,
|
||||||
|
django_to_python_datetime,
|
||||||
)
|
)
|
||||||
from apps.common.functions.format import get_format
|
from django.forms import widgets
|
||||||
|
from django.utils import dates, formats, translation
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class AirDatePickerInput(widgets.DateInput):
|
class AirDatePickerInput(widgets.DateInput):
|
||||||
@@ -52,6 +51,8 @@ class AirDatePickerInput(widgets.DateInput):
|
|||||||
def build_attrs(self, base_attrs, extra_attrs=None):
|
def build_attrs(self, base_attrs, extra_attrs=None):
|
||||||
attrs = super().build_attrs(base_attrs, extra_attrs)
|
attrs = super().build_attrs(base_attrs, extra_attrs)
|
||||||
|
|
||||||
|
attrs["class"] = attrs.get("class", "") + " input"
|
||||||
|
|
||||||
attrs["data-now-button-txt"] = _("Today")
|
attrs["data-now-button-txt"] = _("Today")
|
||||||
attrs["data-auto-close"] = str(self.auto_close).lower()
|
attrs["data-auto-close"] = str(self.auto_close).lower()
|
||||||
attrs["data-clear-button"] = str(self.clear_button).lower()
|
attrs["data-clear-button"] = str(self.clear_button).lower()
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from django.forms import widgets, SelectMultiple
|
from django.forms import SelectMultiple, widgets
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@ class TomSelect(widgets.Select):
|
|||||||
checkboxes=False,
|
checkboxes=False,
|
||||||
group_by=None,
|
group_by=None,
|
||||||
*args,
|
*args,
|
||||||
**kwargs
|
**kwargs,
|
||||||
):
|
):
|
||||||
super().__init__(attrs, *args, **kwargs)
|
super().__init__(attrs, *args, **kwargs)
|
||||||
self.remove_button = remove_button
|
self.remove_button = remove_button
|
||||||
|
|||||||
@@ -1,16 +1,15 @@
|
|||||||
from crispy_bootstrap5.bootstrap5 import Switch
|
from apps.common.widgets.crispy.daisyui import Switch
|
||||||
from crispy_forms.bootstrap import FormActions
|
|
||||||
from crispy_forms.helper import FormHelper
|
|
||||||
from crispy_forms.layout import Layout, Row, Column
|
|
||||||
from django import forms
|
|
||||||
from django.forms import CharField
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
|
||||||
|
|
||||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||||
from apps.common.widgets.datepicker import AirDateTimePickerInput
|
from apps.common.widgets.datepicker import AirDateTimePickerInput
|
||||||
from apps.common.widgets.decimal import ArbitraryDecimalDisplayNumberInput
|
from apps.common.widgets.decimal import ArbitraryDecimalDisplayNumberInput
|
||||||
from apps.common.widgets.tom_select import TomSelect
|
from apps.common.widgets.tom_select import TomSelect
|
||||||
from apps.currencies.models import Currency, ExchangeRate, ExchangeRateService
|
from apps.currencies.models import Currency, ExchangeRate, ExchangeRateService
|
||||||
|
from crispy_forms.bootstrap import FormActions
|
||||||
|
from crispy_forms.helper import FormHelper
|
||||||
|
from crispy_forms.layout import Column, Layout, Row
|
||||||
|
from django import forms
|
||||||
|
from django.forms import CharField
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class CurrencyForm(forms.ModelForm):
|
class CurrencyForm(forms.ModelForm):
|
||||||
@@ -51,17 +50,13 @@ class CurrencyForm(forms.ModelForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -89,17 +84,13 @@ class ExchangeRateForm(forms.ModelForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -132,8 +123,8 @@ class ExchangeRateServiceForm(forms.ModelForm):
|
|||||||
Switch("singleton"),
|
Switch("singleton"),
|
||||||
"api_key",
|
"api_key",
|
||||||
Row(
|
Row(
|
||||||
Column("interval_type", css_class="form-group col-md-6"),
|
Column("interval_type"),
|
||||||
Column("fetch_interval", css_class="form-group col-md-6"),
|
Column("fetch_interval"),
|
||||||
),
|
),
|
||||||
"target_currencies",
|
"target_currencies",
|
||||||
"target_accounts",
|
"target_accounts",
|
||||||
@@ -142,16 +133,12 @@ class ExchangeRateServiceForm(forms.ModelForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|||||||
+25
-47
@@ -1,22 +1,20 @@
|
|||||||
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, Row, Column, HTML
|
|
||||||
from django import forms
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
|
||||||
|
|
||||||
from apps.accounts.models import Account
|
from apps.accounts.models import Account
|
||||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
|
||||||
from apps.common.widgets.datepicker import AirDatePickerInput
|
|
||||||
from apps.common.widgets.decimal import ArbitraryDecimalDisplayNumberInput
|
|
||||||
from apps.common.widgets.tom_select import TomSelect
|
|
||||||
from apps.dca.models import DCAStrategy, DCAEntry
|
|
||||||
from apps.common.widgets.tom_select import TransactionSelect
|
|
||||||
from apps.transactions.models import Transaction, TransactionTag, TransactionCategory
|
|
||||||
from apps.common.fields.forms.dynamic_select import (
|
from apps.common.fields.forms.dynamic_select import (
|
||||||
DynamicModelChoiceField,
|
DynamicModelChoiceField,
|
||||||
DynamicModelMultipleChoiceField,
|
DynamicModelMultipleChoiceField,
|
||||||
)
|
)
|
||||||
|
from apps.common.widgets.crispy.daisyui import Switch
|
||||||
|
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||||
|
from apps.common.widgets.datepicker import AirDatePickerInput
|
||||||
|
from apps.common.widgets.decimal import ArbitraryDecimalDisplayNumberInput
|
||||||
|
from apps.common.widgets.tom_select import TomSelect, TransactionSelect
|
||||||
|
from apps.dca.models import DCAEntry, DCAStrategy
|
||||||
|
from apps.transactions.models import Transaction, TransactionCategory, TransactionTag
|
||||||
|
from crispy_forms.bootstrap import AccordionGroup, FormActions, Accordion
|
||||||
|
from crispy_forms.helper import FormHelper
|
||||||
|
from crispy_forms.layout import HTML, Column, Layout, Row
|
||||||
|
from django import forms
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class DCAStrategyForm(forms.ModelForm):
|
class DCAStrategyForm(forms.ModelForm):
|
||||||
@@ -36,8 +34,8 @@ class DCAStrategyForm(forms.ModelForm):
|
|||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
"name",
|
"name",
|
||||||
Row(
|
Row(
|
||||||
Column("payment_currency", css_class="form-group col-md-6"),
|
Column("payment_currency"),
|
||||||
Column("target_currency", css_class="form-group col-md-6"),
|
Column("target_currency"),
|
||||||
),
|
),
|
||||||
"notes",
|
"notes",
|
||||||
)
|
)
|
||||||
@@ -45,17 +43,13 @@ class DCAStrategyForm(forms.ModelForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -155,11 +149,11 @@ class DCAEntryForm(forms.ModelForm):
|
|||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
"date",
|
"date",
|
||||||
Row(
|
Row(
|
||||||
Column("amount_paid", css_class="form-group col-md-6"),
|
Column("amount_paid"),
|
||||||
Column("amount_received", css_class="form-group col-md-6"),
|
Column("amount_received"),
|
||||||
),
|
),
|
||||||
"notes",
|
"notes",
|
||||||
BS5Accordion(
|
Accordion(
|
||||||
AccordionGroup(
|
AccordionGroup(
|
||||||
_("Create transaction"),
|
_("Create transaction"),
|
||||||
Switch("create_transaction"),
|
Switch("create_transaction"),
|
||||||
@@ -168,19 +162,11 @@ class DCAEntryForm(forms.ModelForm):
|
|||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
"from_account",
|
"from_account",
|
||||||
css_class="form-group",
|
|
||||||
),
|
),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column("from_category"),
|
||||||
"from_category",
|
Column("from_tags"),
|
||||||
css_class="form-group col-md-6 mb-0",
|
|
||||||
),
|
|
||||||
Column(
|
|
||||||
"from_tags", css_class="form-group col-md-6 mb-0"
|
|
||||||
),
|
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
css_class="p-1 mx-1 my-3 border rounded-3",
|
css_class="p-1 mx-1 my-3 border rounded-3",
|
||||||
@@ -192,14 +178,10 @@ class DCAEntryForm(forms.ModelForm):
|
|||||||
"to_account",
|
"to_account",
|
||||||
css_class="form-group",
|
css_class="form-group",
|
||||||
),
|
),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column("to_category"),
|
||||||
"to_category", css_class="form-group col-md-6 mb-0"
|
Column("to_tags"),
|
||||||
),
|
|
||||||
Column("to_tags", css_class="form-group col-md-6 mb-0"),
|
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
css_class="p-1 mx-1 my-3 border rounded-3",
|
css_class="p-1 mx-1 my-3 border rounded-3",
|
||||||
@@ -220,17 +202,13 @@ class DCAEntryForm(forms.ModelForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
|
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||||
from crispy_forms.bootstrap import FormActions
|
from crispy_forms.bootstrap import FormActions
|
||||||
from crispy_forms.helper import FormHelper
|
from crispy_forms.helper import FormHelper
|
||||||
from crispy_forms.layout import Layout, HTML
|
from crispy_forms.layout import HTML, Layout
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
|
||||||
|
|
||||||
|
|
||||||
class ExportForm(forms.Form):
|
class ExportForm(forms.Form):
|
||||||
users = forms.BooleanField(
|
users = forms.BooleanField(
|
||||||
@@ -115,9 +114,7 @@ class ExportForm(forms.Form):
|
|||||||
"dca",
|
"dca",
|
||||||
"import_profiles",
|
"import_profiles",
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Export"), css_class="btn btn-primary"),
|
||||||
"submit", _("Export"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -162,7 +159,7 @@ class RestoreForm(forms.Form):
|
|||||||
self.helper.form_method = "post"
|
self.helper.form_method = "post"
|
||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
"zip_file",
|
"zip_file",
|
||||||
HTML("<hr />"),
|
HTML('<hr class="hr my-3"/>'),
|
||||||
"users",
|
"users",
|
||||||
"accounts",
|
"accounts",
|
||||||
"currencies",
|
"currencies",
|
||||||
@@ -181,9 +178,7 @@ class RestoreForm(forms.Form):
|
|||||||
"dca_entries",
|
"dca_entries",
|
||||||
"import_profiles",
|
"import_profiles",
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Restore"), css_class="btn btn-primary"),
|
||||||
"submit", _("Restore"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||||
|
from apps.import_app.models import ImportProfile
|
||||||
from crispy_forms.bootstrap import FormActions
|
from crispy_forms.bootstrap import FormActions
|
||||||
from crispy_forms.helper import FormHelper
|
from crispy_forms.helper import FormHelper
|
||||||
from crispy_forms.layout import (
|
from crispy_forms.layout import (
|
||||||
@@ -6,9 +8,6 @@ from crispy_forms.layout import (
|
|||||||
from django import forms
|
from django import forms
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from apps.import_app.models import ImportProfile
|
|
||||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
|
||||||
|
|
||||||
|
|
||||||
class ImportProfileForm(forms.ModelForm):
|
class ImportProfileForm(forms.ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -30,17 +29,13 @@ class ImportProfileForm(forms.ModelForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -57,8 +52,6 @@ class ImportRunFileUploadForm(forms.Form):
|
|||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
"file",
|
"file",
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Import"), css_class="btn btn-primary"),
|
||||||
"submit", _("Import"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|||||||
+12
-13
@@ -1,15 +1,14 @@
|
|||||||
from crispy_forms.helper import FormHelper
|
|
||||||
from crispy_forms.layout import Layout, Field, Row, Column
|
|
||||||
from django import forms
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
|
||||||
|
|
||||||
from apps.common.widgets.datepicker import (
|
from apps.common.widgets.datepicker import (
|
||||||
|
AirDatePickerInput,
|
||||||
AirMonthYearPickerInput,
|
AirMonthYearPickerInput,
|
||||||
AirYearPickerInput,
|
AirYearPickerInput,
|
||||||
AirDatePickerInput,
|
|
||||||
)
|
)
|
||||||
from apps.transactions.models import TransactionCategory
|
|
||||||
from apps.common.widgets.tom_select import TomSelect
|
from apps.common.widgets.tom_select import TomSelect
|
||||||
|
from apps.transactions.models import TransactionCategory
|
||||||
|
from crispy_forms.helper import FormHelper
|
||||||
|
from crispy_forms.layout import Column, Field, Layout, Row
|
||||||
|
from django import forms
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class SingleMonthForm(forms.Form):
|
class SingleMonthForm(forms.Form):
|
||||||
@@ -59,8 +58,8 @@ class MonthRangeForm(forms.Form):
|
|||||||
|
|
||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
Row(
|
Row(
|
||||||
Column("month_from", css_class="form-group col-md-6"),
|
Column("month_from"),
|
||||||
Column("month_to", css_class="form-group col-md-6"),
|
Column("month_to"),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -82,8 +81,8 @@ class YearRangeForm(forms.Form):
|
|||||||
|
|
||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
Row(
|
Row(
|
||||||
Column("year_from", css_class="form-group col-md-6"),
|
Column("year_from"),
|
||||||
Column("year_to", css_class="form-group col-md-6"),
|
Column("year_to"),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -105,8 +104,8 @@ class DateRangeForm(forms.Form):
|
|||||||
|
|
||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
Row(
|
Row(
|
||||||
Column("date_from", css_class="form-group col-md-6"),
|
Column("date_from"),
|
||||||
Column("date_to", css_class="form-group col-md-6"),
|
Column("date_to"),
|
||||||
css_class="mb-0",
|
css_class="mb-0",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -182,3 +182,29 @@ def calculate_historical_account_balance(queryset):
|
|||||||
historical_account_balance[date_filter(end_date, "b Y")] = month_data
|
historical_account_balance[date_filter(end_date, "b Y")] = month_data
|
||||||
|
|
||||||
return historical_account_balance
|
return historical_account_balance
|
||||||
|
|
||||||
|
|
||||||
|
def calculate_monthly_net_worth_difference(historical_net_worth):
|
||||||
|
diff_dict = OrderedDict()
|
||||||
|
if not historical_net_worth:
|
||||||
|
return diff_dict
|
||||||
|
|
||||||
|
# Get all currencies
|
||||||
|
currencies = set()
|
||||||
|
for data in historical_net_worth.values():
|
||||||
|
currencies.update(data.keys())
|
||||||
|
|
||||||
|
# Initialize prev_values for all currencies
|
||||||
|
prev_values = {currency: Decimal("0.00") for currency in currencies}
|
||||||
|
|
||||||
|
for month, values in historical_net_worth.items():
|
||||||
|
diff_values = {}
|
||||||
|
for currency in sorted(list(currencies)):
|
||||||
|
current_val = values.get(currency, Decimal("0.00"))
|
||||||
|
prev_val = prev_values.get(currency, Decimal("0.00"))
|
||||||
|
diff_values[currency] = current_val - prev_val
|
||||||
|
|
||||||
|
diff_dict[month] = diff_values
|
||||||
|
prev_values = values.copy()
|
||||||
|
|
||||||
|
return diff_dict
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ from django.views.decorators.http import require_http_methods
|
|||||||
from apps.net_worth.utils.calculate_net_worth import (
|
from apps.net_worth.utils.calculate_net_worth import (
|
||||||
calculate_historical_currency_net_worth,
|
calculate_historical_currency_net_worth,
|
||||||
calculate_historical_account_balance,
|
calculate_historical_account_balance,
|
||||||
|
calculate_monthly_net_worth_difference,
|
||||||
)
|
)
|
||||||
from apps.transactions.models import Transaction
|
from apps.transactions.models import Transaction
|
||||||
from apps.transactions.utils.calculations import (
|
from apps.transactions.utils.calculations import (
|
||||||
@@ -96,6 +97,38 @@ def net_worth(request):
|
|||||||
|
|
||||||
chart_data_currency_json = json.dumps(chart_data_currency, cls=DjangoJSONEncoder)
|
chart_data_currency_json = json.dumps(chart_data_currency, cls=DjangoJSONEncoder)
|
||||||
|
|
||||||
|
monthly_difference_data = calculate_monthly_net_worth_difference(
|
||||||
|
historical_net_worth=historical_currency_net_worth
|
||||||
|
)
|
||||||
|
|
||||||
|
diff_labels = (
|
||||||
|
list(monthly_difference_data.keys()) if monthly_difference_data else []
|
||||||
|
)
|
||||||
|
diff_currencies = (
|
||||||
|
list(monthly_difference_data[diff_labels[0]].keys())
|
||||||
|
if monthly_difference_data and diff_labels
|
||||||
|
else []
|
||||||
|
)
|
||||||
|
|
||||||
|
diff_datasets = []
|
||||||
|
for i, currency in enumerate(diff_currencies):
|
||||||
|
data = [
|
||||||
|
float(month_data.get(currency, 0))
|
||||||
|
for month_data in monthly_difference_data.values()
|
||||||
|
]
|
||||||
|
diff_datasets.append(
|
||||||
|
{
|
||||||
|
"label": currency,
|
||||||
|
"data": data,
|
||||||
|
"borderWidth": 3,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
chart_data_monthly_difference = {"labels": diff_labels, "datasets": diff_datasets}
|
||||||
|
chart_data_monthly_difference_json = json.dumps(
|
||||||
|
chart_data_monthly_difference, cls=DjangoJSONEncoder
|
||||||
|
)
|
||||||
|
|
||||||
historical_account_balance = calculate_historical_account_balance(
|
historical_account_balance = calculate_historical_account_balance(
|
||||||
queryset=transactions_account_queryset
|
queryset=transactions_account_queryset
|
||||||
)
|
)
|
||||||
@@ -140,6 +173,7 @@ def net_worth(request):
|
|||||||
"chart_data_accounts_json": chart_data_accounts_json,
|
"chart_data_accounts_json": chart_data_accounts_json,
|
||||||
"accounts": accounts,
|
"accounts": accounts,
|
||||||
"type": view_type,
|
"type": view_type,
|
||||||
|
"chart_data_monthly_difference_json": chart_data_monthly_difference_json,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+52
-69
@@ -1,20 +1,21 @@
|
|||||||
from crispy_bootstrap5.bootstrap5 import Switch, BS5Accordion
|
from apps.common.fields.forms.dynamic_select import DynamicModelChoiceField
|
||||||
from crispy_forms.bootstrap import FormActions, AccordionGroup
|
from apps.common.widgets.crispy.daisyui import Switch
|
||||||
|
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||||
|
from apps.common.widgets.tom_select import TomSelect, TransactionSelect
|
||||||
|
from apps.rules.models import (
|
||||||
|
TransactionRule,
|
||||||
|
TransactionRuleAction,
|
||||||
|
UpdateOrCreateTransactionRuleAction,
|
||||||
|
)
|
||||||
|
from apps.transactions.forms import BulkEditTransactionForm
|
||||||
|
from apps.transactions.models import Transaction
|
||||||
|
from crispy_forms.bootstrap import AccordionGroup, FormActions, Accordion
|
||||||
from crispy_forms.helper import FormHelper
|
from crispy_forms.helper import FormHelper
|
||||||
from crispy_forms.layout import Layout, Field, Row, Column, HTML
|
from crispy_forms.layout import HTML, Column, Field, Layout, Row
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
|
||||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
|
||||||
from apps.common.widgets.tom_select import TomSelect, 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):
|
class TransactionRuleForm(forms.ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -53,17 +54,13 @@ class TransactionRuleForm(forms.ModelForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -97,17 +94,13 @@ class TransactionRuleActionForm(forms.ModelForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -214,148 +207,148 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
|
|||||||
|
|
||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
"order",
|
"order",
|
||||||
BS5Accordion(
|
Accordion(
|
||||||
AccordionGroup(
|
AccordionGroup(
|
||||||
_("Search Criteria"),
|
_("Search Criteria"),
|
||||||
Field("filter", rows=1),
|
Field("filter", rows=1),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Field("search_type_operator"),
|
Field("search_type_operator"),
|
||||||
css_class="form-group col-md-4",
|
css_class="col-span-12 md:col-span-4",
|
||||||
),
|
),
|
||||||
Column(
|
Column(
|
||||||
Field("search_type", rows=1),
|
Field("search_type", rows=1),
|
||||||
css_class="form-group col-md-8",
|
css_class="col-span-12 md:col-span-8",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Field("search_is_paid_operator"),
|
Field("search_is_paid_operator"),
|
||||||
css_class="form-group col-md-4",
|
css_class="col-span-12 md:col-span-4",
|
||||||
),
|
),
|
||||||
Column(
|
Column(
|
||||||
Field("search_is_paid", rows=1),
|
Field("search_is_paid", rows=1),
|
||||||
css_class="form-group col-md-8",
|
css_class="col-span-12 md:col-span-8",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Field("search_mute_operator"),
|
Field("search_mute_operator"),
|
||||||
css_class="form-group col-md-4",
|
css_class="col-span-12 md:col-span-4",
|
||||||
),
|
),
|
||||||
Column(
|
Column(
|
||||||
Field("search_mute", rows=1),
|
Field("search_mute", rows=1),
|
||||||
css_class="form-group col-md-8",
|
css_class="col-span-12 md:col-span-8",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Field("search_account_operator"),
|
Field("search_account_operator"),
|
||||||
css_class="form-group col-md-4",
|
css_class="col-span-12 md:col-span-4",
|
||||||
),
|
),
|
||||||
Column(
|
Column(
|
||||||
Field("search_account", rows=1),
|
Field("search_account", rows=1),
|
||||||
css_class="form-group col-md-8",
|
css_class="col-span-12 md:col-span-8",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Field("search_entities_operator"),
|
Field("search_entities_operator"),
|
||||||
css_class="form-group col-md-4",
|
css_class="col-span-12 md:col-span-4",
|
||||||
),
|
),
|
||||||
Column(
|
Column(
|
||||||
Field("search_entities", rows=1),
|
Field("search_entities", rows=1),
|
||||||
css_class="form-group col-md-8",
|
css_class="col-span-12 md:col-span-8",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Field("search_date_operator"),
|
Field("search_date_operator"),
|
||||||
css_class="form-group col-md-4",
|
css_class="col-span-12 md:col-span-4",
|
||||||
),
|
),
|
||||||
Column(
|
Column(
|
||||||
Field("search_date", rows=1),
|
Field("search_date", rows=1),
|
||||||
css_class="form-group col-md-8",
|
css_class="col-span-12 md:col-span-8",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Field("search_reference_date_operator"),
|
Field("search_reference_date_operator"),
|
||||||
css_class="form-group col-md-4",
|
css_class="col-span-12 md:col-span-4",
|
||||||
),
|
),
|
||||||
Column(
|
Column(
|
||||||
Field("search_reference_date", rows=1),
|
Field("search_reference_date", rows=1),
|
||||||
css_class="form-group col-md-8",
|
css_class="col-span-12 md:col-span-8",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Field("search_description_operator"),
|
Field("search_description_operator"),
|
||||||
css_class="form-group col-md-4",
|
css_class="col-span-12 md:col-span-4",
|
||||||
),
|
),
|
||||||
Column(
|
Column(
|
||||||
Field("search_description", rows=1),
|
Field("search_description", rows=1),
|
||||||
css_class="form-group col-md-8",
|
css_class="col-span-12 md:col-span-8",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Field("search_amount_operator"),
|
Field("search_amount_operator"),
|
||||||
css_class="form-group col-md-4",
|
css_class="col-span-12 md:col-span-4",
|
||||||
),
|
),
|
||||||
Column(
|
Column(
|
||||||
Field("search_amount", rows=1),
|
Field("search_amount", rows=1),
|
||||||
css_class="form-group col-md-8",
|
css_class="col-span-12 md:col-span-8",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Field("search_category_operator"),
|
Field("search_category_operator"),
|
||||||
css_class="form-group col-md-4",
|
css_class="col-span-12 md:col-span-4",
|
||||||
),
|
),
|
||||||
Column(
|
Column(
|
||||||
Field("search_category", rows=1),
|
Field("search_category", rows=1),
|
||||||
css_class="form-group col-md-8",
|
css_class="col-span-12 md:col-span-8",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Field("search_tags_operator"),
|
Field("search_tags_operator"),
|
||||||
css_class="form-group col-md-4",
|
css_class="col-span-12 md:col-span-4",
|
||||||
),
|
),
|
||||||
Column(
|
Column(
|
||||||
Field("search_tags", rows=1),
|
Field("search_tags", rows=1),
|
||||||
css_class="form-group col-md-8",
|
css_class="col-span-12 md:col-span-8",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Field("search_notes_operator"),
|
Field("search_notes_operator"),
|
||||||
css_class="form-group col-md-4",
|
css_class="col-span-12 md:col-span-4",
|
||||||
),
|
),
|
||||||
Column(
|
Column(
|
||||||
Field("search_notes", rows=1),
|
Field("search_notes", rows=1),
|
||||||
css_class="form-group col-md-8",
|
css_class="col-span-12 md:col-span-8",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Field("search_internal_note_operator"),
|
Field("search_internal_note_operator"),
|
||||||
css_class="form-group col-md-4",
|
css_class="col-span-12 md:col-span-4",
|
||||||
),
|
),
|
||||||
Column(
|
Column(
|
||||||
Field("search_internal_note", rows=1),
|
Field("search_internal_note", rows=1),
|
||||||
css_class="form-group col-md-8",
|
css_class="col-span-12 md:col-span-8",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Field("search_internal_id_operator"),
|
Field("search_internal_id_operator"),
|
||||||
css_class="form-group col-md-4",
|
css_class="col-span-12 md:col-span-4",
|
||||||
),
|
),
|
||||||
Column(
|
Column(
|
||||||
Field("search_internal_id", rows=1),
|
Field("search_internal_id", rows=1),
|
||||||
css_class="form-group col-md-8",
|
css_class="col-span-12 md:col-span-8",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
active=True,
|
active=True,
|
||||||
@@ -386,17 +379,13 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -427,9 +416,7 @@ class DryRunCreatedTransacion(forms.Form):
|
|||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
"transaction",
|
"transaction",
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Test"), css_class="btn btn-primary"),
|
||||||
"submit", _("Test"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -464,9 +451,7 @@ class DryRunDeletedTransacion(forms.Form):
|
|||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
"transaction",
|
"transaction",
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Test"), css_class="btn btn-primary"),
|
||||||
"submit", _("Test"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -496,13 +481,11 @@ class DryRunUpdatedTransactionForm(BulkEditTransactionForm):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.helper.layout.insert(0, "transaction")
|
self.helper.layout.insert(0, "transaction")
|
||||||
self.helper.layout.insert(1, HTML("<hr/>"))
|
self.helper.layout.insert(1, HTML('<hr class="hr my-3" />'))
|
||||||
|
|
||||||
# Change submit button
|
# Change submit button
|
||||||
self.helper.layout[-1] = FormActions(
|
self.helper.layout[-1] = FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Test"), css_class="btn btn-primary")
|
||||||
"submit", _("Test"), css_class="btn btn-outline-primary w-100"
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if self.data.get("transaction"):
|
if self.data.get("transaction"):
|
||||||
|
|||||||
+23
-5
@@ -95,9 +95,9 @@ class DryRunResults:
|
|||||||
return
|
return
|
||||||
|
|
||||||
if isinstance(end_instance, Transaction):
|
if isinstance(end_instance, Transaction):
|
||||||
start_instance = end_instance.deepcopy()
|
end_instance = end_instance.deepcopy()
|
||||||
elif isinstance(end_instance, dict):
|
elif isinstance(end_instance, dict):
|
||||||
start_instance = deepcopy(end_instance)
|
end_instance = deepcopy(end_instance)
|
||||||
|
|
||||||
result = {
|
result = {
|
||||||
"type": "update_or_create_transaction",
|
"type": "update_or_create_transaction",
|
||||||
@@ -213,6 +213,16 @@ def check_for_transaction_rules(
|
|||||||
f"{prefix}internal_id": transaction.internal_id,
|
f"{prefix}internal_id": transaction.internal_id,
|
||||||
f"{prefix}is_deleted": transaction.deleted,
|
f"{prefix}is_deleted": transaction.deleted,
|
||||||
f"{prefix}is_muted": transaction.mute,
|
f"{prefix}is_muted": transaction.mute,
|
||||||
|
f"{prefix}is_recurring": transaction.recurring_transaction is not None,
|
||||||
|
f"{prefix}is_installment": transaction.installment_plan is not None,
|
||||||
|
f"{prefix}installment_number": (
|
||||||
|
transaction.installment_id if transaction.installment_plan else None
|
||||||
|
),
|
||||||
|
f"{prefix}installment_total": (
|
||||||
|
transaction.installment_plan.number_of_installments
|
||||||
|
if transaction.installment_plan
|
||||||
|
else None
|
||||||
|
),
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
return {
|
return {
|
||||||
@@ -256,6 +266,12 @@ def check_for_transaction_rules(
|
|||||||
f"{prefix}internal_id": transaction.get("internal_id", ""),
|
f"{prefix}internal_id": transaction.get("internal_id", ""),
|
||||||
f"{prefix}is_deleted": transaction.get("deleted", True),
|
f"{prefix}is_deleted": transaction.get("deleted", True),
|
||||||
f"{prefix}is_muted": transaction.get("mute", False),
|
f"{prefix}is_muted": transaction.get("mute", False),
|
||||||
|
f"{prefix}is_recurring": transaction.get(
|
||||||
|
"recurring_transaction", False
|
||||||
|
),
|
||||||
|
f"{prefix}is_installment": transaction.get("installment", False),
|
||||||
|
f"{prefix}installment_number": transaction.get("installment_id"),
|
||||||
|
f"{prefix}installment_total": transaction.get("installment_total"),
|
||||||
}
|
}
|
||||||
|
|
||||||
def _process_update_or_create_transaction_action(processed_action):
|
def _process_update_or_create_transaction_action(processed_action):
|
||||||
@@ -520,7 +536,8 @@ def check_for_transaction_rules(
|
|||||||
return transaction
|
return transaction
|
||||||
|
|
||||||
user = get_user_model().objects.get(id=user_id)
|
user = get_user_model().objects.get(id=user_id)
|
||||||
write_current_user(user)
|
if not dry_run:
|
||||||
|
write_current_user(user)
|
||||||
logs = [] if dry_run else None
|
logs = [] if dry_run else None
|
||||||
dry_run_results = DryRunResults(dry_run=dry_run)
|
dry_run_results = DryRunResults(dry_run=dry_run)
|
||||||
|
|
||||||
@@ -745,11 +762,12 @@ def check_for_transaction_rules(
|
|||||||
"** Error while executing 'check_for_transaction_rules' task",
|
"** Error while executing 'check_for_transaction_rules' task",
|
||||||
level="error",
|
level="error",
|
||||||
)
|
)
|
||||||
delete_current_user()
|
|
||||||
if not dry_run:
|
if not dry_run:
|
||||||
|
delete_current_user()
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
delete_current_user()
|
if not dry_run:
|
||||||
|
delete_current_user()
|
||||||
|
|
||||||
return logs, dry_run_results.results
|
return logs, dry_run_results.results
|
||||||
|
|
||||||
|
|||||||
@@ -90,4 +90,12 @@ def serialize_transaction(sender: Transaction, deleted: bool):
|
|||||||
"internal_note": sender.internal_note,
|
"internal_note": sender.internal_note,
|
||||||
"internal_id": sender.internal_id,
|
"internal_id": sender.internal_id,
|
||||||
"mute": sender.mute,
|
"mute": sender.mute,
|
||||||
|
"installment_id": sender.installment_id if sender.installment_plan else None,
|
||||||
|
"installment_total": (
|
||||||
|
sender.installment_plan.number_of_installments
|
||||||
|
if sender.installment_plan is not None
|
||||||
|
else None
|
||||||
|
),
|
||||||
|
"installment": sender.installment_plan is not None,
|
||||||
|
"recurring_transaction": sender.recurring_transaction is not None,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -564,7 +564,7 @@ def dry_run_rule_updated(request, pk):
|
|||||||
|
|
||||||
response = render(
|
response = render(
|
||||||
request,
|
request,
|
||||||
"rules/fragments/transaction_rule/dry_run/created.html",
|
"rules/fragments/transaction_rule/dry_run/updated.html",
|
||||||
{"form": form, "rule": rule, "logs": logs, "results": results},
|
{"form": form, "rule": rule, "logs": logs, "results": results},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,4 @@
|
|||||||
import django_filters
|
import django_filters
|
||||||
from crispy_forms.helper import FormHelper
|
|
||||||
from crispy_forms.layout import Layout, Field, Row, Column
|
|
||||||
from django import forms
|
|
||||||
from django.db.models import Q
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
|
||||||
from django_filters import Filter
|
|
||||||
|
|
||||||
from apps.accounts.models import Account
|
from apps.accounts.models import Account
|
||||||
from apps.common.fields.month_year import MonthYearFormField
|
from apps.common.fields.month_year import MonthYearFormField
|
||||||
from apps.common.widgets.datepicker import AirDatePickerInput
|
from apps.common.widgets.datepicker import AirDatePickerInput
|
||||||
@@ -15,9 +8,15 @@ from apps.currencies.models import Currency
|
|||||||
from apps.transactions.models import (
|
from apps.transactions.models import (
|
||||||
Transaction,
|
Transaction,
|
||||||
TransactionCategory,
|
TransactionCategory,
|
||||||
TransactionTag,
|
|
||||||
TransactionEntity,
|
TransactionEntity,
|
||||||
|
TransactionTag,
|
||||||
)
|
)
|
||||||
|
from crispy_forms.helper import FormHelper
|
||||||
|
from crispy_forms.layout import Column, Field, Layout, Row
|
||||||
|
from django import forms
|
||||||
|
from django.db.models import Q
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
from django_filters import Filter
|
||||||
|
|
||||||
SITUACAO_CHOICES = (
|
SITUACAO_CHOICES = (
|
||||||
("1", _("Paid")),
|
("1", _("Paid")),
|
||||||
@@ -159,14 +158,12 @@ class TransactionsFilter(django_filters.FilterSet):
|
|||||||
Field("description"),
|
Field("description"),
|
||||||
Row(Column("date_start"), Column("date_end")),
|
Row(Column("date_start"), Column("date_end")),
|
||||||
Row(
|
Row(
|
||||||
Column("reference_date_start", css_class="form-group col-md-6 mb-0"),
|
Column("reference_date_start"),
|
||||||
Column("reference_date_end", css_class="form-group col-md-6 mb-0"),
|
Column("reference_date_end"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column("from_amount", css_class="form-group col-md-6 mb-0"),
|
Column("from_amount"),
|
||||||
Column("to_amount", css_class="form-group col-md-6 mb-0"),
|
Column("to_amount"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
Field("account", size=1),
|
Field("account", size=1),
|
||||||
Field("currency", size=1),
|
Field("currency", size=1),
|
||||||
|
|||||||
+92
-172
@@ -1,39 +1,38 @@
|
|||||||
from copy import deepcopy
|
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
|
|
||||||
from crispy_forms.layout import (
|
|
||||||
Layout,
|
|
||||||
Row,
|
|
||||||
Column,
|
|
||||||
Field,
|
|
||||||
Div,
|
|
||||||
HTML,
|
|
||||||
)
|
|
||||||
from django import forms
|
|
||||||
from django.db.models import Q
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
|
||||||
|
|
||||||
from apps.accounts.models import Account
|
from apps.accounts.models import Account
|
||||||
from apps.common.fields.forms.dynamic_select import (
|
from apps.common.fields.forms.dynamic_select import (
|
||||||
DynamicModelChoiceField,
|
DynamicModelChoiceField,
|
||||||
DynamicModelMultipleChoiceField,
|
DynamicModelMultipleChoiceField,
|
||||||
)
|
)
|
||||||
|
from apps.common.widgets.crispy.daisyui import Switch
|
||||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||||
from apps.common.widgets.datepicker import AirDatePickerInput, AirMonthYearPickerInput
|
from apps.common.widgets.datepicker import AirDatePickerInput, AirMonthYearPickerInput
|
||||||
from apps.common.widgets.decimal import ArbitraryDecimalDisplayNumberInput
|
from apps.common.widgets.decimal import ArbitraryDecimalDisplayNumberInput
|
||||||
from apps.common.widgets.tom_select import TomSelect
|
from apps.common.widgets.tom_select import TomSelect
|
||||||
from apps.rules.signals import transaction_created, transaction_updated
|
from apps.rules.signals import transaction_created, transaction_updated
|
||||||
from apps.transactions.models import (
|
from apps.transactions.models import (
|
||||||
|
InstallmentPlan,
|
||||||
|
QuickTransaction,
|
||||||
|
RecurringTransaction,
|
||||||
Transaction,
|
Transaction,
|
||||||
TransactionCategory,
|
TransactionCategory,
|
||||||
TransactionTag,
|
|
||||||
InstallmentPlan,
|
|
||||||
RecurringTransaction,
|
|
||||||
TransactionEntity,
|
TransactionEntity,
|
||||||
QuickTransaction,
|
TransactionTag,
|
||||||
)
|
)
|
||||||
|
from crispy_forms.bootstrap import AccordionGroup, AppendedText, FormActions, Accordion
|
||||||
|
from crispy_forms.helper import FormHelper
|
||||||
|
from crispy_forms.layout import (
|
||||||
|
HTML,
|
||||||
|
Column,
|
||||||
|
Div,
|
||||||
|
Field,
|
||||||
|
Layout,
|
||||||
|
Row,
|
||||||
|
)
|
||||||
|
from django import forms
|
||||||
|
from django.db.models import Q
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class TransactionForm(forms.ModelForm):
|
class TransactionForm(forms.ModelForm):
|
||||||
@@ -134,21 +133,18 @@ class TransactionForm(forms.ModelForm):
|
|||||||
),
|
),
|
||||||
Field("is_paid", template="transactions/widgets/paid_toggle_button.html"),
|
Field("is_paid", template="transactions/widgets/paid_toggle_button.html"),
|
||||||
Row(
|
Row(
|
||||||
Column("account", css_class="form-group col-md-6 mb-0"),
|
Column("account"),
|
||||||
Column("entities", css_class="form-group col-md-6 mb-0"),
|
Column("entities"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(Field("date"), css_class="form-group col-md-6 mb-0"),
|
Column(Field("date")),
|
||||||
Column(Field("reference_date"), css_class="form-group col-md-6 mb-0"),
|
Column(Field("reference_date")),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
"description",
|
"description",
|
||||||
Field("amount", inputmode="decimal"),
|
Field("amount", inputmode="decimal"),
|
||||||
Row(
|
Row(
|
||||||
Column("category", css_class="form-group col-md-6 mb-0"),
|
Column("category"),
|
||||||
Column("tags", css_class="form-group col-md-6 mb-0"),
|
Column("tags"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
"notes",
|
"notes",
|
||||||
)
|
)
|
||||||
@@ -164,20 +160,18 @@ class TransactionForm(forms.ModelForm):
|
|||||||
Field("is_paid", template="transactions/widgets/paid_toggle_button.html"),
|
Field("is_paid", template="transactions/widgets/paid_toggle_button.html"),
|
||||||
"account",
|
"account",
|
||||||
Row(
|
Row(
|
||||||
Column(Field("date"), css_class="form-group col-md-6 mb-0"),
|
Column(Field("date")),
|
||||||
Column(Field("reference_date"), css_class="form-group col-md-6 mb-0"),
|
Column(Field("reference_date")),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
"description",
|
"description",
|
||||||
Field("amount", inputmode="decimal"),
|
Field("amount", inputmode="decimal"),
|
||||||
BS5Accordion(
|
Accordion(
|
||||||
AccordionGroup(
|
AccordionGroup(
|
||||||
_("More"),
|
_("More"),
|
||||||
"entities",
|
"entities",
|
||||||
Row(
|
Row(
|
||||||
Column("category", css_class="form-group col-md-6 mb-0"),
|
Column("category"),
|
||||||
Column("tags", css_class="form-group col-md-6 mb-0"),
|
Column("tags"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
"notes",
|
"notes",
|
||||||
active=False,
|
active=False,
|
||||||
@@ -187,9 +181,7 @@ class TransactionForm(forms.ModelForm):
|
|||||||
css_class="mb-3",
|
css_class="mb-3",
|
||||||
),
|
),
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -202,29 +194,25 @@ class TransactionForm(forms.ModelForm):
|
|||||||
)
|
)
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.fields["amount"].widget = ArbitraryDecimalDisplayNumberInput()
|
self.fields["amount"].widget = ArbitraryDecimalDisplayNumberInput()
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
Div(
|
Div(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary"
|
|
||||||
),
|
|
||||||
NoClassSubmit(
|
NoClassSubmit(
|
||||||
"submit_and_similar",
|
"submit_and_similar",
|
||||||
_("Save and add similar"),
|
_("Save and add similar"),
|
||||||
css_class="btn btn-outline-primary",
|
css_class="btn btn-primary btn-soft",
|
||||||
),
|
),
|
||||||
NoClassSubmit(
|
NoClassSubmit(
|
||||||
"submit_and_another",
|
"submit_and_another",
|
||||||
_("Save and add another"),
|
_("Save and add another"),
|
||||||
css_class="btn btn-outline-primary",
|
css_class="btn btn-primary btn-soft",
|
||||||
),
|
),
|
||||||
css_class="d-grid gap-2",
|
css_class="flex flex-col gap-2 mt-3",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -348,18 +336,16 @@ class QuickTransactionForm(forms.ModelForm):
|
|||||||
),
|
),
|
||||||
Field("is_paid", template="transactions/widgets/paid_toggle_button.html"),
|
Field("is_paid", template="transactions/widgets/paid_toggle_button.html"),
|
||||||
"name",
|
"name",
|
||||||
HTML("<hr />"),
|
HTML('<hr class="hr my-3" />'),
|
||||||
Row(
|
Row(
|
||||||
Column("account", css_class="form-group col-md-6 mb-0"),
|
Column("account"),
|
||||||
Column("entities", css_class="form-group col-md-6 mb-0"),
|
Column("entities"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
"description",
|
"description",
|
||||||
Field("amount", inputmode="decimal"),
|
Field("amount", inputmode="decimal"),
|
||||||
Row(
|
Row(
|
||||||
Column("category", css_class="form-group col-md-6 mb-0"),
|
Column("category"),
|
||||||
Column("tags", css_class="form-group col-md-6 mb-0"),
|
Column("tags"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
"notes",
|
"notes",
|
||||||
Switch("mute"),
|
Switch("mute"),
|
||||||
@@ -372,19 +358,14 @@ class QuickTransactionForm(forms.ModelForm):
|
|||||||
)
|
)
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.fields["amount"].widget = ArbitraryDecimalDisplayNumberInput()
|
self.fields["amount"].widget = ArbitraryDecimalDisplayNumberInput()
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
Div(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary"
|
|
||||||
),
|
|
||||||
css_class="d-grid gap-2",
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -481,27 +462,22 @@ class BulkEditTransactionForm(forms.Form):
|
|||||||
template="transactions/widgets/unselectable_paid_toggle_button.html",
|
template="transactions/widgets/unselectable_paid_toggle_button.html",
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column("account", css_class="form-group col-md-6 mb-0"),
|
Column("account"),
|
||||||
Column("entities", css_class="form-group col-md-6 mb-0"),
|
Column("entities"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(Field("date"), css_class="form-group col-md-6 mb-0"),
|
Column(Field("date")),
|
||||||
Column(Field("reference_date"), css_class="form-group col-md-6 mb-0"),
|
Column(Field("reference_date")),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
"description",
|
"description",
|
||||||
Field("amount", inputmode="decimal"),
|
Field("amount", inputmode="decimal"),
|
||||||
Row(
|
Row(
|
||||||
Column("category", css_class="form-group col-md-6 mb-0"),
|
Column("category"),
|
||||||
Column("tags", css_class="form-group col-md-6 mb-0"),
|
Column("tags"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
"notes",
|
"notes",
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -600,62 +576,34 @@ class TransferForm(forms.Form):
|
|||||||
|
|
||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
Row(
|
Row(
|
||||||
Column(Field("date"), css_class="form-group col-md-6 mb-0"),
|
Column(Field("date")),
|
||||||
Column(
|
Column(
|
||||||
Field("reference_date"),
|
Field("reference_date"),
|
||||||
css_class="form-group col-md-6 mb-0",
|
|
||||||
),
|
),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
Field("description"),
|
Field("description"),
|
||||||
Field("notes"),
|
Field("notes"),
|
||||||
Switch("mute"),
|
Switch("mute"),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column("from_account"),
|
||||||
Row(
|
Column(Field("from_amount")),
|
||||||
Column(
|
Column("from_category"),
|
||||||
"from_account",
|
Column("from_tags"),
|
||||||
css_class="form-group col-md-6 mb-0",
|
css_class="bg-base-100 rounded-box p-4 border-base-content/60 border my-3",
|
||||||
),
|
|
||||||
Column(
|
|
||||||
Field("from_amount"),
|
|
||||||
css_class="form-group col-md-6 mb-0",
|
|
||||||
),
|
|
||||||
css_class="form-row",
|
|
||||||
),
|
|
||||||
Row(
|
|
||||||
Column("from_category", css_class="form-group col-md-6 mb-0"),
|
|
||||||
Column("from_tags", css_class="form-group col-md-6 mb-0"),
|
|
||||||
css_class="form-row",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
css_class="p-1 mx-1 my-3 border rounded-3",
|
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Row(
|
"to_account",
|
||||||
Column(
|
|
||||||
"to_account",
|
|
||||||
css_class="form-group col-md-6 mb-0",
|
|
||||||
),
|
|
||||||
Column(
|
|
||||||
Field("to_amount"),
|
|
||||||
css_class="form-group col-md-6 mb-0",
|
|
||||||
),
|
|
||||||
css_class="form-row",
|
|
||||||
),
|
|
||||||
Row(
|
|
||||||
Column("to_category", css_class="form-group col-md-6 mb-0"),
|
|
||||||
Column("to_tags", css_class="form-group col-md-6 mb-0"),
|
|
||||||
css_class="form-row",
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
css_class="p-1 mx-1 my-3 border rounded-3",
|
Column(
|
||||||
|
Field("to_amount"),
|
||||||
|
),
|
||||||
|
Column("to_category"),
|
||||||
|
Column("to_tags"),
|
||||||
|
css_class="bg-base-100 rounded-box p-4 border-base-content/60 border",
|
||||||
),
|
),
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Transfer"), css_class="btn btn-primary"),
|
||||||
"submit", _("Transfer"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -841,30 +789,26 @@ class InstallmentPlanForm(forms.ModelForm):
|
|||||||
template="transactions/widgets/income_expense_toggle_buttons.html",
|
template="transactions/widgets/income_expense_toggle_buttons.html",
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column("account", css_class="form-group col-md-6 mb-0"),
|
Column("account"),
|
||||||
Column("entities", css_class="form-group col-md-6 mb-0"),
|
Column("entities"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
"description",
|
"description",
|
||||||
Switch("add_description_to_transaction"),
|
Switch("add_description_to_transaction"),
|
||||||
"notes",
|
"notes",
|
||||||
Switch("add_notes_to_transaction"),
|
Switch("add_notes_to_transaction"),
|
||||||
Row(
|
Row(
|
||||||
Column("number_of_installments", css_class="form-group col-md-6 mb-0"),
|
Column("number_of_installments"),
|
||||||
Column("installment_start", css_class="form-group col-md-6 mb-0"),
|
Column("installment_start"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column("start_date", css_class="form-group col-md-4 mb-0"),
|
Column("start_date", css_class="col-span-12 md:col-span-4"),
|
||||||
Column("reference_date", css_class="form-group col-md-4 mb-0"),
|
Column("reference_date", css_class="col-span-12 md:col-span-4"),
|
||||||
Column("recurrence", css_class="form-group col-md-4 mb-0"),
|
Column("recurrence", css_class="col-span-12 md:col-span-4"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
"installment_amount",
|
"installment_amount",
|
||||||
Row(
|
Row(
|
||||||
Column("category", css_class="form-group col-md-6 mb-0"),
|
Column("category"),
|
||||||
Column("tags", css_class="form-group col-md-6 mb-0"),
|
Column("tags"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -874,17 +818,13 @@ class InstallmentPlanForm(forms.ModelForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -917,17 +857,13 @@ class TransactionTagForm(forms.ModelForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -949,17 +885,13 @@ class TransactionEntityForm(forms.ModelForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -984,17 +916,13 @@ class TransactionCategoryForm(forms.ModelForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -1103,30 +1031,26 @@ class RecurringTransactionForm(forms.ModelForm):
|
|||||||
template="transactions/widgets/income_expense_toggle_buttons.html",
|
template="transactions/widgets/income_expense_toggle_buttons.html",
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column("account", css_class="form-group col-md-6 mb-0"),
|
Column("account"),
|
||||||
Column("entities", css_class="form-group col-md-6 mb-0"),
|
Column("entities"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
"description",
|
"description",
|
||||||
Switch("add_description_to_transaction"),
|
Switch("add_description_to_transaction"),
|
||||||
"amount",
|
"amount",
|
||||||
Row(
|
Row(
|
||||||
Column("category", css_class="form-group col-md-6 mb-0"),
|
Column("category"),
|
||||||
Column("tags", css_class="form-group col-md-6 mb-0"),
|
Column("tags"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
"notes",
|
"notes",
|
||||||
Switch("add_notes_to_transaction"),
|
Switch("add_notes_to_transaction"),
|
||||||
Row(
|
Row(
|
||||||
Column("start_date", css_class="form-group col-md-6 mb-0"),
|
Column("start_date"),
|
||||||
Column("reference_date", css_class="form-group col-md-6 mb-0"),
|
Column("reference_date"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
Row(
|
Row(
|
||||||
Column("recurrence_interval", css_class="form-group col-md-4 mb-0"),
|
Column("recurrence_interval", css_class="col-span-12 md:col-span-4"),
|
||||||
Column("recurrence_type", css_class="form-group col-md-4 mb-0"),
|
Column("recurrence_type", css_class="col-span-12 md:col-span-4"),
|
||||||
Column("end_date", css_class="form-group col-md-4 mb-0"),
|
Column("end_date", css_class="col-span-12 md:col-span-4"),
|
||||||
css_class="form-row",
|
|
||||||
),
|
),
|
||||||
AppendedText("keep_at_most", _("future transactions")),
|
AppendedText("keep_at_most", _("future transactions")),
|
||||||
)
|
)
|
||||||
@@ -1138,17 +1062,13 @@ class RecurringTransactionForm(forms.ModelForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +1,30 @@
|
|||||||
|
import decimal
|
||||||
import logging
|
import logging
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
|
|
||||||
|
from apps.common.fields.month_year import MonthYearModelField
|
||||||
|
from apps.common.functions.decimals import truncate_decimal
|
||||||
|
from apps.common.middleware.thread_local import get_current_user
|
||||||
|
from apps.common.models import (
|
||||||
|
OwnedObject,
|
||||||
|
OwnedObjectManager,
|
||||||
|
SharedObject,
|
||||||
|
SharedObjectManager,
|
||||||
|
)
|
||||||
|
from apps.common.templatetags.decimal import drop_trailing_zeros, localize_number
|
||||||
|
from apps.currencies.utils.convert import convert
|
||||||
|
from apps.transactions.validators import validate_decimal_places, validate_non_negative
|
||||||
from dateutil.relativedelta import relativedelta
|
from dateutil.relativedelta import relativedelta
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.validators import MinValueValidator
|
from django.core.validators import MinValueValidator
|
||||||
from django.db import models, transaction
|
from django.db import models, transaction
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from django.dispatch import Signal
|
from django.dispatch import Signal
|
||||||
|
from django.forms import ValidationError
|
||||||
from django.template.defaultfilters import date
|
from django.template.defaultfilters import date
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from apps.common.fields.month_year import MonthYearModelField
|
|
||||||
from apps.common.functions.decimals import truncate_decimal
|
|
||||||
from apps.common.templatetags.decimal import localize_number, drop_trailing_zeros
|
|
||||||
from apps.currencies.utils.convert import convert
|
|
||||||
from apps.transactions.validators import validate_decimal_places, validate_non_negative
|
|
||||||
from apps.common.middleware.thread_local import get_current_user
|
|
||||||
from apps.common.models import (
|
|
||||||
SharedObject,
|
|
||||||
SharedObjectManager,
|
|
||||||
OwnedObject,
|
|
||||||
OwnedObjectManager,
|
|
||||||
)
|
|
||||||
|
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
|
|
||||||
|
|
||||||
@@ -380,18 +381,32 @@ class Transaction(OwnedObject):
|
|||||||
db_table = "transactions"
|
db_table = "transactions"
|
||||||
default_manager_name = "objects"
|
default_manager_name = "objects"
|
||||||
|
|
||||||
def clean_fields(self, *args, **kwargs):
|
def clean(self):
|
||||||
|
super().clean()
|
||||||
|
|
||||||
|
# Only process amount and reference_date if account exists
|
||||||
|
# If account is missing, Django's required field validation will handle it
|
||||||
|
try:
|
||||||
|
account = self.account
|
||||||
|
except Transaction.account.RelatedObjectDoesNotExist:
|
||||||
|
# Account doesn't exist, skip processing that depends on it
|
||||||
|
# Django will add the required field error
|
||||||
|
return
|
||||||
|
|
||||||
|
# Validate and normalize amount
|
||||||
|
if isinstance(self.amount, (str, int, float)):
|
||||||
|
self.amount = decimal.Decimal(str(self.amount))
|
||||||
|
|
||||||
self.amount = truncate_decimal(
|
self.amount = truncate_decimal(
|
||||||
value=self.amount, decimal_places=self.account.currency.decimal_places
|
value=self.amount, decimal_places=account.currency.decimal_places
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Normalize reference_date
|
||||||
if self.reference_date:
|
if self.reference_date:
|
||||||
self.reference_date = self.reference_date.replace(day=1)
|
self.reference_date = self.reference_date.replace(day=1)
|
||||||
elif not self.reference_date and self.date:
|
elif not self.reference_date and self.date:
|
||||||
self.reference_date = self.date.replace(day=1)
|
self.reference_date = self.date.replace(day=1)
|
||||||
|
|
||||||
super().clean_fields(*args, **kwargs)
|
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
# This is not recommended as it will run twice on some cases like form and API saves.
|
# 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.
|
# We only do this here because we forgot to independently call it on multiple places.
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ from decimal import Decimal
|
|||||||
from django import template
|
from django import template
|
||||||
from django.utils.formats import number_format
|
from django.utils.formats import number_format
|
||||||
|
|
||||||
|
|
||||||
register = template.Library()
|
register = template.Library()
|
||||||
|
|
||||||
|
|
||||||
@@ -13,13 +12,27 @@ def _format_string(prefix, amount, decimal_places, suffix):
|
|||||||
value=abs(amount), decimal_pos=decimal_places, force_grouping=True
|
value=abs(amount), decimal_pos=decimal_places, force_grouping=True
|
||||||
)
|
)
|
||||||
if amount < 0:
|
if amount < 0:
|
||||||
|
return "-", prefix, formatted_amount, suffix
|
||||||
return f"-{prefix}{formatted_amount}{suffix}"
|
return f"-{prefix}{formatted_amount}{suffix}"
|
||||||
else:
|
else:
|
||||||
|
return "", prefix, formatted_amount, suffix
|
||||||
return f"{prefix}{formatted_amount}{suffix}"
|
return f"{prefix}{formatted_amount}{suffix}"
|
||||||
else:
|
else:
|
||||||
return "ERR"
|
return "", "", "ERR", ""
|
||||||
|
|
||||||
|
|
||||||
@register.simple_tag(name="currency_display")
|
@register.simple_tag(name="currency_display")
|
||||||
def currency_display(amount, prefix, suffix, decimal_places):
|
def currency_display(amount, prefix, suffix, decimal_places, string=False):
|
||||||
return _format_string(prefix, amount, decimal_places, suffix)
|
sign, prefix, amount, suffix = _format_string(
|
||||||
|
prefix, amount, decimal_places, suffix
|
||||||
|
)
|
||||||
|
|
||||||
|
if string:
|
||||||
|
return f"{sign}{prefix}{amount}{suffix}"
|
||||||
|
|
||||||
|
return {
|
||||||
|
"sign": sign,
|
||||||
|
"prefix": prefix,
|
||||||
|
"amount": amount,
|
||||||
|
"suffix": suffix,
|
||||||
|
}
|
||||||
|
|||||||
@@ -137,6 +137,7 @@ def quick_transaction_add_as_transaction(request, quick_transaction_id):
|
|||||||
"category",
|
"category",
|
||||||
"tags",
|
"tags",
|
||||||
"entities",
|
"entities",
|
||||||
|
"internal_id",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -206,6 +207,7 @@ def quick_transaction_add_as_quick_transaction(request, transaction_id):
|
|||||||
"recurring_transaction",
|
"recurring_transaction",
|
||||||
"deleted",
|
"deleted",
|
||||||
"deleted_at",
|
"deleted_at",
|
||||||
|
"internal_id",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+26
-28
@@ -1,35 +1,43 @@
|
|||||||
|
from apps.common.middleware.thread_local import get_current_user
|
||||||
|
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||||
|
from apps.users.models import UserSettings
|
||||||
from crispy_forms.bootstrap import (
|
from crispy_forms.bootstrap import (
|
||||||
FormActions,
|
FormActions,
|
||||||
)
|
)
|
||||||
from crispy_forms.helper import FormHelper
|
from crispy_forms.helper import FormHelper
|
||||||
from crispy_forms.layout import Layout, Submit, Row, Column, Field, Div, HTML
|
from crispy_forms.layout import HTML, Column, Div, Field, Layout, Row, Submit
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.auth.forms import (
|
from django.contrib.auth.forms import (
|
||||||
UsernameField,
|
|
||||||
AuthenticationForm,
|
AuthenticationForm,
|
||||||
UserCreationForm,
|
UserCreationForm,
|
||||||
|
UsernameField,
|
||||||
)
|
)
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
|
||||||
from apps.users.models import UserSettings
|
|
||||||
from apps.common.middleware.thread_local import get_current_user
|
|
||||||
|
|
||||||
|
|
||||||
class LoginForm(AuthenticationForm):
|
class LoginForm(AuthenticationForm):
|
||||||
username = UsernameField(
|
username = UsernameField(
|
||||||
label=_("E-mail"),
|
label=_("E-mail"),
|
||||||
widget=forms.EmailInput(
|
widget=forms.EmailInput(
|
||||||
attrs={"class": "form-control", "placeholder": "E-mail", "name": "email"}
|
attrs={
|
||||||
|
"class": "input",
|
||||||
|
"placeholder": _("E-mail"),
|
||||||
|
"name": "email",
|
||||||
|
"autocomplete": "email",
|
||||||
|
}
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
password = forms.CharField(
|
password = forms.CharField(
|
||||||
label=_("Password"),
|
label=_("Password"),
|
||||||
strip=False,
|
strip=False,
|
||||||
widget=forms.PasswordInput(
|
widget=forms.PasswordInput(
|
||||||
attrs={"class": "form-control", "placeholder": "Senha"}
|
attrs={
|
||||||
|
"class": "input",
|
||||||
|
"placeholder": _("Password"),
|
||||||
|
"autocomplete": "current-password",
|
||||||
|
}
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -45,7 +53,7 @@ class LoginForm(AuthenticationForm):
|
|||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
"username",
|
"username",
|
||||||
"password",
|
"password",
|
||||||
Submit("Submit", "Login", css_class="btn btn-primary w-100"),
|
Submit("Submit", "Login", css_class="w-full mt-3"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -138,9 +146,7 @@ class UserSettingsForm(forms.ModelForm):
|
|||||||
HTML("<hr />"),
|
HTML("<hr />"),
|
||||||
"volume",
|
"volume",
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Save"), css_class="btn btn-primary"),
|
||||||
"submit", _("Save"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -191,8 +197,8 @@ class UserUpdateForm(forms.ModelForm):
|
|||||||
# Define the layout using Crispy Forms, including the new fields
|
# Define the layout using Crispy Forms, including the new fields
|
||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
Row(
|
Row(
|
||||||
Column("first_name", css_class="form-group col-md-6"),
|
Column("first_name"),
|
||||||
Column("last_name", css_class="form-group col-md-6"),
|
Column("last_name"),
|
||||||
css_class="row",
|
css_class="row",
|
||||||
),
|
),
|
||||||
Field("email"),
|
Field("email"),
|
||||||
@@ -213,17 +219,13 @@ class UserUpdateForm(forms.ModelForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -354,8 +356,8 @@ class UserAddForm(UserCreationForm):
|
|||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
Field("email"),
|
Field("email"),
|
||||||
Row(
|
Row(
|
||||||
Column("first_name", css_class="form-group col-md-6"),
|
Column("first_name"),
|
||||||
Column("last_name", css_class="form-group col-md-6"),
|
Column("last_name"),
|
||||||
css_class="row",
|
css_class="row",
|
||||||
),
|
),
|
||||||
# UserCreationForm provides 'password1' and 'password2' fields
|
# UserCreationForm provides 'password1' and 'password2' fields
|
||||||
@@ -375,17 +377,13 @@ class UserAddForm(UserCreationForm):
|
|||||||
if self.instance and self.instance.pk:
|
if self.instance and self.instance.pk:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Update"), css_class="btn btn-primary"),
|
||||||
"submit", _("Update"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.helper.layout.append(
|
self.helper.layout.append(
|
||||||
FormActions(
|
FormActions(
|
||||||
NoClassSubmit(
|
NoClassSubmit("submit", _("Add"), css_class="btn btn-primary"),
|
||||||
"submit", _("Add"), css_class="btn btn-outline-primary w-100"
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -18,10 +18,15 @@ urlpatterns = [
|
|||||||
name="toggle_sound_playing",
|
name="toggle_sound_playing",
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
"user/toggle-sidebar/",
|
"user/session/toggle-sidebar/",
|
||||||
views.toggle_sidebar_status,
|
views.toggle_sidebar_status,
|
||||||
name="toggle_sidebar_status",
|
name="toggle_sidebar_status",
|
||||||
),
|
),
|
||||||
|
path(
|
||||||
|
"user/session/toggle-theme/",
|
||||||
|
views.toggle_theme,
|
||||||
|
name="toggle_theme",
|
||||||
|
),
|
||||||
path(
|
path(
|
||||||
"user/settings/",
|
"user/settings/",
|
||||||
views.update_settings,
|
views.update_settings,
|
||||||
|
|||||||
+31
-13
@@ -1,27 +1,26 @@
|
|||||||
|
from apps.common.decorators.demo import disabled_on_demo
|
||||||
|
from apps.common.decorators.htmx import only_htmx
|
||||||
|
from apps.common.decorators.user import htmx_login_required, is_superuser
|
||||||
|
from apps.users.forms import (
|
||||||
|
LoginForm,
|
||||||
|
UserAddForm,
|
||||||
|
UserSettingsForm,
|
||||||
|
UserUpdateForm,
|
||||||
|
)
|
||||||
|
from apps.users.models import UserSettings
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth import logout, get_user_model
|
from django.contrib.auth import get_user_model, logout
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.contrib.auth.views import (
|
from django.contrib.auth.views import (
|
||||||
LoginView,
|
LoginView,
|
||||||
)
|
)
|
||||||
from django.core.exceptions import PermissionDenied
|
from django.core.exceptions import PermissionDenied
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
from django.shortcuts import redirect, render, get_object_or_404
|
from django.shortcuts import get_object_or_404, redirect, render
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django.views.decorators.http import require_http_methods
|
from django.views.decorators.http import require_http_methods
|
||||||
|
|
||||||
from apps.common.decorators.htmx import only_htmx
|
|
||||||
from apps.common.decorators.user import is_superuser, htmx_login_required
|
|
||||||
from apps.users.forms import (
|
|
||||||
LoginForm,
|
|
||||||
UserSettingsForm,
|
|
||||||
UserUpdateForm,
|
|
||||||
UserAddForm,
|
|
||||||
)
|
|
||||||
from apps.users.models import UserSettings
|
|
||||||
from apps.common.decorators.demo import disabled_on_demo
|
|
||||||
|
|
||||||
|
|
||||||
def logout_view(request):
|
def logout_view(request):
|
||||||
logout(request)
|
logout(request)
|
||||||
@@ -118,6 +117,7 @@ def update_settings(request):
|
|||||||
|
|
||||||
@only_htmx
|
@only_htmx
|
||||||
@htmx_login_required
|
@htmx_login_required
|
||||||
|
@require_http_methods(["GET"])
|
||||||
def toggle_sidebar_status(request):
|
def toggle_sidebar_status(request):
|
||||||
if not request.session.get("sidebar_status"):
|
if not request.session.get("sidebar_status"):
|
||||||
request.session["sidebar_status"] = "floating"
|
request.session["sidebar_status"] = "floating"
|
||||||
@@ -134,6 +134,24 @@ def toggle_sidebar_status(request):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@htmx_login_required
|
||||||
|
@require_http_methods(["GET"])
|
||||||
|
def toggle_theme(request):
|
||||||
|
if not request.session.get("theme"):
|
||||||
|
request.session["theme"] = "wygiwyh_dark"
|
||||||
|
|
||||||
|
if request.session["theme"] == "wygiwyh_dark":
|
||||||
|
request.session["theme"] = "wygiwyh_light"
|
||||||
|
elif request.session["theme"] == "wygiwyh_light":
|
||||||
|
request.session["theme"] = "wygiwyh_dark"
|
||||||
|
else:
|
||||||
|
request.session["theme"] = "wygiwyh_light"
|
||||||
|
|
||||||
|
return HttpResponse(
|
||||||
|
status=204,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@htmx_login_required
|
@htmx_login_required
|
||||||
@is_superuser
|
@is_superuser
|
||||||
@require_http_methods(["GET"])
|
@require_http_methods(["GET"])
|
||||||
|
|||||||
+161
-152
@@ -7,9 +7,9 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-07 13:08+0000\n"
|
"POT-Creation-Date: 2025-09-20 14:08+0000\n"
|
||||||
"PO-Revision-Date: 2025-07-22 06:17+0000\n"
|
"PO-Revision-Date: 2025-11-01 01:17+0000\n"
|
||||||
"Last-Translator: seraphblade2010 <marc.butenhoff@web.de>\n"
|
"Last-Translator: mlystopad <mlystopadt@gmail.com>\n"
|
||||||
"Language-Team: German <https://translations.herculino.com/projects/wygiwyh/"
|
"Language-Team: German <https://translations.herculino.com/projects/wygiwyh/"
|
||||||
"app/de/>\n"
|
"app/de/>\n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
@@ -17,13 +17,13 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 5.12.2\n"
|
"X-Generator: Weblate 5.14\n"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:26
|
#: apps/accounts/forms.py:26
|
||||||
msgid "Group name"
|
msgid "Group name"
|
||||||
msgstr "Gruppe Name"
|
msgstr "Gruppe Name"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:42 apps/accounts/forms.py:118
|
#: apps/accounts/forms.py:42 apps/accounts/forms.py:112
|
||||||
#: apps/currencies/forms.py:55 apps/currencies/forms.py:93
|
#: 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/currencies/forms.py:146 apps/dca/forms.py:49 apps/dca/forms.py:224
|
||||||
#: apps/import_app/forms.py:34 apps/rules/forms.py:57 apps/rules/forms.py:101
|
#: apps/import_app/forms.py:34 apps/rules/forms.py:57 apps/rules/forms.py:101
|
||||||
@@ -33,11 +33,12 @@ msgstr "Gruppe Name"
|
|||||||
#: apps/transactions/forms.py:953 apps/transactions/forms.py:988
|
#: apps/transactions/forms.py:953 apps/transactions/forms.py:988
|
||||||
#: apps/transactions/forms.py:1142 apps/users/forms.py:217
|
#: apps/transactions/forms.py:1142 apps/users/forms.py:217
|
||||||
#: apps/users/forms.py:379
|
#: apps/users/forms.py:379
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:132
|
#: templates/rules/fragments/transaction_rule/view.html:132
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Aktualisierung"
|
msgstr "Aktualisierung"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:50 apps/accounts/forms.py:126
|
#: apps/accounts/forms.py:50 apps/accounts/forms.py:120
|
||||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
||||||
#: apps/currencies/forms.py:101 apps/currencies/forms.py:154
|
#: apps/currencies/forms.py:101 apps/currencies/forms.py:154
|
||||||
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
|
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
|
||||||
@@ -71,35 +72,35 @@ msgstr "Hinzufügen"
|
|||||||
msgid "Group"
|
msgid "Group"
|
||||||
msgstr "Gruppe"
|
msgstr "Gruppe"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:135
|
#: apps/accounts/forms.py:129
|
||||||
msgid "New balance"
|
msgid "New balance"
|
||||||
msgstr "Neuer Saldo"
|
msgstr "Neuer Saldo"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:141 apps/dca/forms.py:85 apps/dca/forms.py:92
|
#: apps/accounts/forms.py:135 apps/dca/forms.py:85 apps/dca/forms.py:92
|
||||||
#: apps/insights/forms.py:118 apps/rules/forms.py:185 apps/rules/forms.py:201
|
#: apps/insights/forms.py:118 apps/rules/forms.py:185 apps/rules/forms.py:201
|
||||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:263
|
#: apps/transactions/forms.py:44 apps/transactions/forms.py:263
|
||||||
#: apps/transactions/forms.py:438 apps/transactions/forms.py:540
|
#: apps/transactions/forms.py:438 apps/transactions/forms.py:540
|
||||||
#: apps/transactions/forms.py:547 apps/transactions/forms.py:759
|
#: apps/transactions/forms.py:547 apps/transactions/forms.py:759
|
||||||
#: apps/transactions/forms.py:1020 apps/transactions/models.py:322
|
#: apps/transactions/forms.py:1020 apps/transactions/models.py:323
|
||||||
#: apps/transactions/models.py:556 apps/transactions/models.py:756
|
#: apps/transactions/models.py:560 apps/transactions/models.py:760
|
||||||
#: apps/transactions/models.py:1006
|
#: apps/transactions/models.py:1010
|
||||||
#: templates/insights/fragments/category_overview/index.html:78
|
#: templates/insights/fragments/category_overview/index.html:78
|
||||||
#: templates/insights/fragments/category_overview/index.html:530
|
#: templates/insights/fragments/category_overview/index.html:530
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr "Kategorie"
|
msgstr "Kategorie"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:148 apps/dca/forms.py:101 apps/dca/forms.py:109
|
#: apps/accounts/forms.py:142 apps/dca/forms.py:101 apps/dca/forms.py:109
|
||||||
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135
|
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135
|
||||||
#: apps/rules/forms.py:188 apps/rules/forms.py:198 apps/rules/models.py:45
|
#: apps/rules/forms.py:188 apps/rules/forms.py:198 apps/rules/models.py:45
|
||||||
#: apps/rules/models.py:315 apps/transactions/filters.py:69
|
#: apps/rules/models.py:315 apps/transactions/filters.py:69
|
||||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:271
|
#: apps/transactions/forms.py:52 apps/transactions/forms.py:271
|
||||||
#: apps/transactions/forms.py:446 apps/transactions/forms.py:556
|
#: apps/transactions/forms.py:446 apps/transactions/forms.py:556
|
||||||
#: apps/transactions/forms.py:564 apps/transactions/forms.py:752
|
#: apps/transactions/forms.py:564 apps/transactions/forms.py:752
|
||||||
#: apps/transactions/forms.py:1013 apps/transactions/models.py:328
|
#: apps/transactions/forms.py:1013 apps/transactions/models.py:329
|
||||||
#: apps/transactions/models.py:558 apps/transactions/models.py:760
|
#: apps/transactions/models.py:562 apps/transactions/models.py:764
|
||||||
#: apps/transactions/models.py:1012 templates/includes/navbar.html:111
|
#: apps/transactions/models.py:1016 templates/includes/navbar.html:111
|
||||||
#: templates/includes/sidebar.html:192
|
#: templates/includes/sidebar.html:184
|
||||||
#: templates/insights/fragments/category_overview/index.html:36
|
#: templates/insights/fragments/category_overview/index.html:36
|
||||||
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
@@ -107,8 +108,8 @@ msgstr "Tags"
|
|||||||
|
|
||||||
#: apps/accounts/models.py:12 apps/accounts/models.py:29 apps/dca/models.py:13
|
#: apps/accounts/models.py:12 apps/accounts/models.py:29 apps/dca/models.py:13
|
||||||
#: apps/import_app/models.py:14 apps/rules/models.py:13
|
#: apps/import_app/models.py:14 apps/rules/models.py:13
|
||||||
#: apps/transactions/models.py:214 apps/transactions/models.py:239
|
#: apps/transactions/models.py:215 apps/transactions/models.py:240
|
||||||
#: apps/transactions/models.py:263 apps/transactions/models.py:974
|
#: apps/transactions/models.py:264 apps/transactions/models.py:978
|
||||||
#: templates/account_groups/fragments/list.html:25
|
#: templates/account_groups/fragments/list.html:25
|
||||||
#: templates/accounts/fragments/list.html:25
|
#: templates/accounts/fragments/list.html:25
|
||||||
#: templates/categories/fragments/table.html:16
|
#: templates/categories/fragments/table.html:16
|
||||||
@@ -131,7 +132,7 @@ msgstr "Kontengruppe"
|
|||||||
|
|
||||||
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
||||||
#: templates/account_groups/pages/index.html:4
|
#: templates/account_groups/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:212
|
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:204
|
||||||
msgid "Account Groups"
|
msgid "Account Groups"
|
||||||
msgstr "Kontengruppen"
|
msgstr "Kontengruppen"
|
||||||
|
|
||||||
@@ -180,9 +181,9 @@ msgstr ""
|
|||||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:283
|
#: apps/transactions/forms.py:64 apps/transactions/forms.py:283
|
||||||
#: apps/transactions/forms.py:405 apps/transactions/forms.py:744
|
#: apps/transactions/forms.py:405 apps/transactions/forms.py:744
|
||||||
#: apps/transactions/forms.py:1005 apps/transactions/models.py:294
|
#: apps/transactions/forms.py:1005 apps/transactions/models.py:295
|
||||||
#: apps/transactions/models.py:516 apps/transactions/models.py:738
|
#: apps/transactions/models.py:520 apps/transactions/models.py:742
|
||||||
#: apps/transactions/models.py:980
|
#: apps/transactions/models.py:984
|
||||||
#: templates/installment_plans/fragments/table.html:17
|
#: templates/installment_plans/fragments/table.html:17
|
||||||
#: templates/quick_transactions/fragments/list.html:14
|
#: templates/quick_transactions/fragments/list.html:14
|
||||||
#: templates/recurring_transactions/fragments/table.html:19
|
#: templates/recurring_transactions/fragments/table.html:19
|
||||||
@@ -195,8 +196,8 @@ msgstr "Konto"
|
|||||||
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
||||||
#: templates/accounts/fragments/list.html:5
|
#: templates/accounts/fragments/list.html:5
|
||||||
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
||||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
|
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:196
|
||||||
#: templates/includes/sidebar.html:206
|
#: templates/includes/sidebar.html:198
|
||||||
#: templates/monthly_overview/pages/overview.html:94
|
#: templates/monthly_overview/pages/overview.html:94
|
||||||
#: templates/transactions/fragments/summary.html:12
|
#: templates/transactions/fragments/summary.html:12
|
||||||
#: templates/transactions/pages/transactions.html:137
|
#: templates/transactions/pages/transactions.html:137
|
||||||
@@ -507,7 +508,7 @@ msgstr "Suffix"
|
|||||||
#: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:180
|
#: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:180
|
||||||
#: apps/rules/forms.py:194 apps/rules/models.py:38 apps/rules/models.py:279
|
#: apps/rules/forms.py:194 apps/rules/models.py:38 apps/rules/models.py:279
|
||||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:410
|
#: apps/transactions/forms.py:68 apps/transactions/forms.py:410
|
||||||
#: apps/transactions/forms.py:568 apps/transactions/models.py:304
|
#: apps/transactions/forms.py:568 apps/transactions/models.py:305
|
||||||
#: templates/dca/fragments/strategy/details.html:52
|
#: templates/dca/fragments/strategy/details.html:52
|
||||||
#: templates/exchange_rates/fragments/table.html:10
|
#: templates/exchange_rates/fragments/table.html:10
|
||||||
#: templates/exchange_rates_services/fragments/table.html:10
|
#: templates/exchange_rates_services/fragments/table.html:10
|
||||||
@@ -530,8 +531,8 @@ msgstr "Dezimalstellen"
|
|||||||
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60
|
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60
|
||||||
#: templates/currencies/fragments/list.html:5
|
#: templates/currencies/fragments/list.html:5
|
||||||
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
||||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
|
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:210
|
||||||
#: templates/includes/sidebar.html:220
|
#: templates/includes/sidebar.html:212
|
||||||
#: templates/monthly_overview/pages/overview.html:81
|
#: templates/monthly_overview/pages/overview.html:81
|
||||||
#: templates/transactions/fragments/summary.html:8
|
#: templates/transactions/fragments/summary.html:8
|
||||||
#: templates/transactions/pages/transactions.html:124
|
#: templates/transactions/pages/transactions.html:124
|
||||||
@@ -566,7 +567,7 @@ msgstr "Automatisch"
|
|||||||
#: apps/currencies/models.py:82 apps/export_app/forms.py:68
|
#: apps/currencies/models.py:82 apps/export_app/forms.py:68
|
||||||
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
|
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
|
||||||
#: templates/exchange_rates/pages/index.html:4
|
#: templates/exchange_rates/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:226
|
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:218
|
||||||
msgid "Exchange Rates"
|
msgid "Exchange Rates"
|
||||||
msgstr "Umrechnungskurse"
|
msgstr "Umrechnungskurse"
|
||||||
|
|
||||||
@@ -594,8 +595,8 @@ msgstr "Dienstname"
|
|||||||
msgid "Service Type"
|
msgid "Service Type"
|
||||||
msgstr "Diensttyp"
|
msgstr "Diensttyp"
|
||||||
|
|
||||||
#: apps/currencies/models.py:118 apps/transactions/models.py:218
|
#: apps/currencies/models.py:118 apps/transactions/models.py:219
|
||||||
#: apps/transactions/models.py:242 apps/transactions/models.py:266
|
#: apps/transactions/models.py:243 apps/transactions/models.py:267
|
||||||
#: templates/categories/fragments/list.html:21
|
#: templates/categories/fragments/list.html:21
|
||||||
#: templates/entities/fragments/list.html:21
|
#: templates/entities/fragments/list.html:21
|
||||||
#: templates/recurring_transactions/fragments/list.html:21
|
#: templates/recurring_transactions/fragments/list.html:21
|
||||||
@@ -784,8 +785,8 @@ msgstr "Startwährung"
|
|||||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:184
|
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:184
|
||||||
#: apps/rules/forms.py:200 apps/rules/models.py:43 apps/rules/models.py:295
|
#: apps/rules/forms.py:200 apps/rules/models.py:43 apps/rules/models.py:295
|
||||||
#: apps/transactions/forms.py:432 apps/transactions/forms.py:584
|
#: apps/transactions/forms.py:432 apps/transactions/forms.py:584
|
||||||
#: apps/transactions/models.py:318 apps/transactions/models.py:565
|
#: apps/transactions/models.py:319 apps/transactions/models.py:569
|
||||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1002
|
#: apps/transactions/models.py:770 apps/transactions/models.py:1006
|
||||||
msgid "Notes"
|
msgid "Notes"
|
||||||
msgstr "Notizen"
|
msgstr "Notizen"
|
||||||
|
|
||||||
@@ -842,15 +843,15 @@ msgid "Entry deleted successfully"
|
|||||||
msgstr "Eintrag erfolgreich gelöscht"
|
msgstr "Eintrag erfolgreich gelöscht"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131
|
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131
|
||||||
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:263
|
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:255
|
||||||
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
|
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "Nutzer"
|
msgstr "Nutzer"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
||||||
#: apps/transactions/models.py:379 templates/includes/navbar.html:58
|
#: apps/transactions/models.py:380 templates/includes/navbar.html:58
|
||||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
|
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:83
|
||||||
#: templates/includes/sidebar.html:184
|
#: templates/includes/sidebar.html:176
|
||||||
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
||||||
#: templates/recurring_transactions/fragments/table.html:39
|
#: templates/recurring_transactions/fragments/table.html:39
|
||||||
#: templates/transactions/pages/transactions.html:5
|
#: templates/transactions/pages/transactions.html:5
|
||||||
@@ -860,7 +861,7 @@ msgstr "Transaktionen"
|
|||||||
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134
|
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134
|
||||||
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
||||||
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
||||||
#: templates/includes/sidebar.html:186
|
#: templates/includes/sidebar.html:178
|
||||||
msgid "Categories"
|
msgid "Categories"
|
||||||
msgstr "Kategorien"
|
msgstr "Kategorien"
|
||||||
|
|
||||||
@@ -869,27 +870,27 @@ msgstr "Kategorien"
|
|||||||
#: apps/rules/models.py:307 apps/transactions/filters.py:74
|
#: apps/rules/models.py:307 apps/transactions/filters.py:74
|
||||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:279
|
#: apps/transactions/forms.py:60 apps/transactions/forms.py:279
|
||||||
#: apps/transactions/forms.py:454 apps/transactions/forms.py:767
|
#: apps/transactions/forms.py:454 apps/transactions/forms.py:767
|
||||||
#: apps/transactions/forms.py:1028 apps/transactions/models.py:277
|
#: apps/transactions/forms.py:1028 apps/transactions/models.py:278
|
||||||
#: apps/transactions/models.py:333 apps/transactions/models.py:561
|
#: apps/transactions/models.py:334 apps/transactions/models.py:565
|
||||||
#: apps/transactions/models.py:763 apps/transactions/models.py:1017
|
#: apps/transactions/models.py:767 apps/transactions/models.py:1021
|
||||||
#: templates/entities/fragments/list.html:5
|
#: templates/entities/fragments/list.html:5
|
||||||
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
|
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
|
||||||
#: templates/includes/sidebar.html:198
|
#: templates/includes/sidebar.html:190
|
||||||
#: templates/insights/fragments/category_overview/index.html:49
|
#: templates/insights/fragments/category_overview/index.html:49
|
||||||
msgid "Entities"
|
msgid "Entities"
|
||||||
msgstr "Entitäten"
|
msgstr "Entitäten"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
||||||
#: apps/transactions/models.py:803 templates/includes/navbar.html:77
|
#: apps/transactions/models.py:807 templates/includes/navbar.html:77
|
||||||
#: templates/includes/sidebar.html:120
|
#: templates/includes/sidebar.html:112
|
||||||
#: templates/recurring_transactions/fragments/list.html:5
|
#: templates/recurring_transactions/fragments/list.html:5
|
||||||
#: templates/recurring_transactions/pages/index.html:4
|
#: templates/recurring_transactions/pages/index.html:4
|
||||||
msgid "Recurring Transactions"
|
msgid "Recurring Transactions"
|
||||||
msgstr "Wiederkehrende Transaktionen"
|
msgstr "Wiederkehrende Transaktionen"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
||||||
#: apps/transactions/models.py:579 templates/includes/navbar.html:75
|
#: apps/transactions/models.py:583 templates/includes/navbar.html:75
|
||||||
#: templates/includes/sidebar.html:114
|
#: templates/includes/sidebar.html:106
|
||||||
#: templates/installment_plans/fragments/list.html:5
|
#: templates/installment_plans/fragments/list.html:5
|
||||||
#: templates/installment_plans/pages/index.html:4
|
#: templates/installment_plans/pages/index.html:4
|
||||||
msgid "Installment Plans"
|
msgid "Installment Plans"
|
||||||
@@ -898,12 +899,12 @@ msgstr "Ratenzahlungs-Pläne"
|
|||||||
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
||||||
#: templates/exchange_rates_services/fragments/list.html:6
|
#: templates/exchange_rates_services/fragments/list.html:6
|
||||||
#: templates/exchange_rates_services/pages/index.html:4
|
#: templates/exchange_rates_services/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:254
|
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:246
|
||||||
msgid "Automatic Exchange Rates"
|
msgid "Automatic Exchange Rates"
|
||||||
msgstr "Automatische Umrechnungskurse"
|
msgstr "Automatische Umrechnungskurse"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135
|
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135
|
||||||
#: templates/includes/sidebar.html:234 templates/rules/fragments/list.html:5
|
#: templates/includes/sidebar.html:226 templates/rules/fragments/list.html:5
|
||||||
#: templates/rules/pages/index.html:4
|
#: templates/rules/pages/index.html:4
|
||||||
msgid "Rules"
|
msgid "Rules"
|
||||||
msgstr "Regeln"
|
msgstr "Regeln"
|
||||||
@@ -975,7 +976,7 @@ msgstr "Datei auswählen"
|
|||||||
|
|
||||||
#: apps/import_app/forms.py:61
|
#: apps/import_app/forms.py:61
|
||||||
#: templates/import_app/fragments/profiles/list.html:62
|
#: templates/import_app/fragments/profiles/list.html:62
|
||||||
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:240
|
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:232
|
||||||
msgid "Import"
|
msgid "Import"
|
||||||
msgstr "Import"
|
msgstr "Import"
|
||||||
|
|
||||||
@@ -1138,15 +1139,15 @@ msgstr "Bediener"
|
|||||||
|
|
||||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:36
|
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:36
|
||||||
#: apps/rules/models.py:271 apps/transactions/forms.py:396
|
#: apps/rules/models.py:271 apps/transactions/forms.py:396
|
||||||
#: apps/transactions/models.py:301 apps/transactions/models.py:521
|
#: apps/transactions/models.py:302 apps/transactions/models.py:525
|
||||||
#: apps/transactions/models.py:744 apps/transactions/models.py:987
|
#: apps/transactions/models.py:748 apps/transactions/models.py:991
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr "Typ"
|
msgstr "Typ"
|
||||||
|
|
||||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:37
|
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:37
|
||||||
#: apps/rules/models.py:275 apps/transactions/filters.py:23
|
#: apps/rules/models.py:275 apps/transactions/filters.py:23
|
||||||
#: apps/transactions/forms.py:400 apps/transactions/models.py:303
|
#: apps/transactions/forms.py:400 apps/transactions/models.py:304
|
||||||
#: apps/transactions/models.py:989 templates/cotton/transaction/item.html:21
|
#: apps/transactions/models.py:993 templates/cotton/transaction/item.html:21
|
||||||
#: templates/cotton/transaction/item.html:32
|
#: templates/cotton/transaction/item.html:32
|
||||||
#: templates/transactions/widgets/paid_toggle_button.html:12
|
#: templates/transactions/widgets/paid_toggle_button.html:12
|
||||||
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:16
|
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:16
|
||||||
@@ -1156,15 +1157,15 @@ msgstr "Bezahlt"
|
|||||||
#: apps/rules/forms.py:181 apps/rules/forms.py:195 apps/rules/models.py:39
|
#: apps/rules/forms.py:181 apps/rules/forms.py:195 apps/rules/models.py:39
|
||||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||||
#: apps/transactions/forms.py:416 apps/transactions/forms.py:571
|
#: apps/transactions/forms.py:416 apps/transactions/forms.py:571
|
||||||
#: apps/transactions/forms.py:773 apps/transactions/models.py:305
|
#: apps/transactions/forms.py:773 apps/transactions/models.py:306
|
||||||
#: apps/transactions/models.py:539 apps/transactions/models.py:768
|
#: apps/transactions/models.py:543 apps/transactions/models.py:772
|
||||||
msgid "Reference Date"
|
msgid "Reference Date"
|
||||||
msgstr "Referenzdatum"
|
msgstr "Referenzdatum"
|
||||||
|
|
||||||
#: apps/rules/forms.py:182 apps/rules/forms.py:196 apps/rules/models.py:41
|
#: apps/rules/forms.py:182 apps/rules/forms.py:196 apps/rules/models.py:41
|
||||||
#: apps/rules/models.py:287 apps/transactions/forms.py:423
|
#: apps/rules/models.py:287 apps/transactions/forms.py:423
|
||||||
#: apps/transactions/models.py:311 apps/transactions/models.py:749
|
#: apps/transactions/models.py:312 apps/transactions/models.py:753
|
||||||
#: apps/transactions/models.py:995 templates/insights/fragments/sankey.html:95
|
#: apps/transactions/models.py:999 templates/insights/fragments/sankey.html:95
|
||||||
#: templates/installment_plans/fragments/table.html:18
|
#: templates/installment_plans/fragments/table.html:18
|
||||||
#: templates/quick_transactions/fragments/list.html:15
|
#: templates/quick_transactions/fragments/list.html:15
|
||||||
#: templates/recurring_transactions/fragments/table.html:20
|
#: templates/recurring_transactions/fragments/table.html:20
|
||||||
@@ -1174,29 +1175,29 @@ msgstr "Betrag"
|
|||||||
#: apps/rules/forms.py:183 apps/rules/forms.py:197 apps/rules/models.py:14
|
#: apps/rules/forms.py:183 apps/rules/forms.py:197 apps/rules/models.py:14
|
||||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:575
|
#: apps/transactions/forms.py:427 apps/transactions/forms.py:575
|
||||||
#: apps/transactions/models.py:316 apps/transactions/models.py:523
|
#: apps/transactions/models.py:317 apps/transactions/models.py:527
|
||||||
#: apps/transactions/models.py:752 apps/transactions/models.py:1000
|
#: apps/transactions/models.py:756 apps/transactions/models.py:1004
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Beschreibung"
|
msgstr "Beschreibung"
|
||||||
|
|
||||||
#: apps/rules/forms.py:186 apps/rules/forms.py:202 apps/rules/models.py:47
|
#: apps/rules/forms.py:186 apps/rules/forms.py:202 apps/rules/models.py:47
|
||||||
#: apps/rules/models.py:299 apps/transactions/models.py:355
|
#: apps/rules/models.py:299 apps/transactions/models.py:356
|
||||||
#: apps/transactions/models.py:1022
|
#: apps/transactions/models.py:1026
|
||||||
msgid "Internal Note"
|
msgid "Internal Note"
|
||||||
msgstr "Interne Notiz"
|
msgstr "Interne Notiz"
|
||||||
|
|
||||||
#: apps/rules/forms.py:187 apps/rules/forms.py:203 apps/rules/models.py:48
|
#: apps/rules/forms.py:187 apps/rules/forms.py:203 apps/rules/models.py:48
|
||||||
#: apps/rules/models.py:303 apps/transactions/models.py:357
|
#: apps/rules/models.py:303 apps/transactions/models.py:358
|
||||||
#: apps/transactions/models.py:1024
|
#: apps/transactions/models.py:1028
|
||||||
msgid "Internal ID"
|
msgid "Internal ID"
|
||||||
msgstr "Interne ID"
|
msgstr "Interne ID"
|
||||||
|
|
||||||
#: apps/rules/forms.py:190 apps/rules/forms.py:204 apps/rules/models.py:40
|
#: apps/rules/forms.py:190 apps/rules/forms.py:204 apps/rules/models.py:40
|
||||||
#: apps/rules/models.py:319 apps/transactions/forms.py:588
|
#: apps/rules/models.py:319 apps/transactions/forms.py:588
|
||||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
#: apps/transactions/models.py:216 apps/transactions/models.py:307
|
||||||
#: apps/transactions/models.py:990
|
#: apps/transactions/models.py:994
|
||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "Deaktivieren"
|
msgstr "Stummschalten"
|
||||||
|
|
||||||
#: apps/rules/forms.py:219
|
#: apps/rules/forms.py:219
|
||||||
msgid "Search Criteria"
|
msgid "Search Criteria"
|
||||||
@@ -1207,7 +1208,7 @@ msgid "Set Values"
|
|||||||
msgstr "Wert setzen"
|
msgstr "Wert setzen"
|
||||||
|
|
||||||
#: apps/rules/forms.py:415 apps/rules/forms.py:452 apps/rules/forms.py:489
|
#: apps/rules/forms.py:415 apps/rules/forms.py:452 apps/rules/forms.py:489
|
||||||
#: apps/transactions/models.py:378
|
#: apps/transactions/models.py:379
|
||||||
msgid "Transaction"
|
msgid "Transaction"
|
||||||
msgstr "Transaktion"
|
msgstr "Transaktion"
|
||||||
|
|
||||||
@@ -1220,6 +1221,9 @@ msgstr ""
|
|||||||
"verknüpft werden soll"
|
"verknüpft werden soll"
|
||||||
|
|
||||||
#: apps/rules/forms.py:431 apps/rules/forms.py:468 apps/rules/forms.py:504
|
#: apps/rules/forms.py:431 apps/rules/forms.py:468 apps/rules/forms.py:504
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:121
|
#: templates/rules/fragments/transaction_rule/view.html:121
|
||||||
msgid "Test"
|
msgid "Test"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1354,7 +1358,7 @@ msgstr ""
|
|||||||
#: apps/transactions/filters.py:24 templates/cotton/transaction/item.html:21
|
#: apps/transactions/filters.py:24 templates/cotton/transaction/item.html:21
|
||||||
#: templates/cotton/transaction/item.html:32 templates/includes/navbar.html:47
|
#: templates/cotton/transaction/item.html:32 templates/includes/navbar.html:47
|
||||||
#: templates/insights/fragments/category_overview/index.html:61
|
#: templates/insights/fragments/category_overview/index.html:61
|
||||||
#: templates/net_worth/net_worth.html:32
|
#: templates/net_worth/net_worth.html:33
|
||||||
#: templates/transactions/widgets/paid_toggle_button.html:8
|
#: templates/transactions/widgets/paid_toggle_button.html:8
|
||||||
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:12
|
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:12
|
||||||
msgid "Projected"
|
msgid "Projected"
|
||||||
@@ -1478,7 +1482,7 @@ msgstr "Transaktionen filtern"
|
|||||||
msgid "End date should be after the start date"
|
msgid "End date should be after the start date"
|
||||||
msgstr "Enddatum sollte hinter dem Startdatum liegen"
|
msgstr "Enddatum sollte hinter dem Startdatum liegen"
|
||||||
|
|
||||||
#: apps/transactions/models.py:220
|
#: apps/transactions/models.py:221
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated categories won't be able to be selected when creating new "
|
"Deactivated categories won't be able to be selected when creating new "
|
||||||
"transactions"
|
"transactions"
|
||||||
@@ -1486,26 +1490,26 @@ msgstr ""
|
|||||||
"Ausgeblendete Kategorien können bei der Erstellung neuer Transaktionen nicht "
|
"Ausgeblendete Kategorien können bei der Erstellung neuer Transaktionen nicht "
|
||||||
"ausgewählt werden"
|
"ausgewählt werden"
|
||||||
|
|
||||||
#: apps/transactions/models.py:228
|
#: apps/transactions/models.py:229
|
||||||
msgid "Transaction Category"
|
msgid "Transaction Category"
|
||||||
msgstr "Transaktionskategorie"
|
msgstr "Transaktionskategorie"
|
||||||
|
|
||||||
#: apps/transactions/models.py:229
|
#: apps/transactions/models.py:230
|
||||||
msgid "Transaction Categories"
|
msgid "Transaction Categories"
|
||||||
msgstr "Transaktionskategorien"
|
msgstr "Transaktionskategorien"
|
||||||
|
|
||||||
#: apps/transactions/models.py:244
|
#: apps/transactions/models.py:245
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated tags won't be able to be selected when creating new transactions"
|
"Deactivated tags won't be able to be selected when creating new transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Deaktivierte Tags können bei der Erstellung neuer Transaktionen nicht "
|
"Deaktivierte Tags können bei der Erstellung neuer Transaktionen nicht "
|
||||||
"ausgewählt werden"
|
"ausgewählt werden"
|
||||||
|
|
||||||
#: apps/transactions/models.py:252 apps/transactions/models.py:253
|
#: apps/transactions/models.py:253 apps/transactions/models.py:254
|
||||||
msgid "Transaction Tags"
|
msgid "Transaction Tags"
|
||||||
msgstr "Tranksaktionstags"
|
msgstr "Tranksaktionstags"
|
||||||
|
|
||||||
#: apps/transactions/models.py:268
|
#: apps/transactions/models.py:269
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated entities won't be able to be selected when creating new "
|
"Deactivated entities won't be able to be selected when creating new "
|
||||||
"transactions"
|
"transactions"
|
||||||
@@ -1513,11 +1517,11 @@ msgstr ""
|
|||||||
"Deaktivierte Entitäten können bei der Erstellung neuer Transaktionen nicht "
|
"Deaktivierte Entitäten können bei der Erstellung neuer Transaktionen nicht "
|
||||||
"ausgewählt werden"
|
"ausgewählt werden"
|
||||||
|
|
||||||
#: apps/transactions/models.py:276
|
#: apps/transactions/models.py:277
|
||||||
msgid "Entity"
|
msgid "Entity"
|
||||||
msgstr "Entität"
|
msgstr "Entität"
|
||||||
|
|
||||||
#: apps/transactions/models.py:288 apps/transactions/models.py:967
|
#: apps/transactions/models.py:289 apps/transactions/models.py:971
|
||||||
#: templates/calendar_view/fragments/list.html:42
|
#: templates/calendar_view/fragments/list.html:42
|
||||||
#: templates/calendar_view/fragments/list.html:44
|
#: templates/calendar_view/fragments/list.html:44
|
||||||
#: templates/calendar_view/fragments/list.html:52
|
#: templates/calendar_view/fragments/list.html:52
|
||||||
@@ -1529,7 +1533,7 @@ msgstr "Entität"
|
|||||||
msgid "Income"
|
msgid "Income"
|
||||||
msgstr "Einnahme"
|
msgstr "Einnahme"
|
||||||
|
|
||||||
#: apps/transactions/models.py:289 apps/transactions/models.py:968
|
#: apps/transactions/models.py:290 apps/transactions/models.py:972
|
||||||
#: templates/calendar_view/fragments/list.html:46
|
#: templates/calendar_view/fragments/list.html:46
|
||||||
#: templates/calendar_view/fragments/list.html:48
|
#: templates/calendar_view/fragments/list.html:48
|
||||||
#: templates/calendar_view/fragments/list.html:56
|
#: templates/calendar_view/fragments/list.html:56
|
||||||
@@ -1540,130 +1544,130 @@ msgstr "Einnahme"
|
|||||||
msgid "Expense"
|
msgid "Expense"
|
||||||
msgstr "Ausgabe"
|
msgstr "Ausgabe"
|
||||||
|
|
||||||
#: apps/transactions/models.py:344 apps/transactions/models.py:578
|
#: apps/transactions/models.py:345 apps/transactions/models.py:582
|
||||||
msgid "Installment Plan"
|
msgid "Installment Plan"
|
||||||
msgstr "Ratenzahlungs-Plan"
|
msgstr "Ratenzahlungs-Plan"
|
||||||
|
|
||||||
#: apps/transactions/models.py:353 apps/transactions/models.py:802
|
#: apps/transactions/models.py:354 apps/transactions/models.py:806
|
||||||
msgid "Recurring Transaction"
|
msgid "Recurring Transaction"
|
||||||
msgstr "Wiederkehrende Transaktion"
|
msgstr "Wiederkehrende Transaktion"
|
||||||
|
|
||||||
#: apps/transactions/models.py:361
|
#: apps/transactions/models.py:362
|
||||||
msgid "Deleted"
|
msgid "Deleted"
|
||||||
msgstr "Gelöscht"
|
msgstr "Gelöscht"
|
||||||
|
|
||||||
#: apps/transactions/models.py:366
|
#: apps/transactions/models.py:367
|
||||||
msgid "Deleted At"
|
msgid "Deleted At"
|
||||||
msgstr "Gelöscht am"
|
msgstr "Gelöscht am"
|
||||||
|
|
||||||
#: apps/transactions/models.py:458 templates/tags/fragments/table.html:71
|
#: apps/transactions/models.py:462 templates/tags/fragments/table.html:71
|
||||||
msgid "No tags"
|
msgid "No tags"
|
||||||
msgstr "Keine Tags"
|
msgstr "Keine Tags"
|
||||||
|
|
||||||
#: apps/transactions/models.py:460
|
#: apps/transactions/models.py:464
|
||||||
msgid "No category"
|
msgid "No category"
|
||||||
msgstr "Keine Kategorie"
|
msgstr "Keine Kategorie"
|
||||||
|
|
||||||
#: apps/transactions/models.py:462
|
#: apps/transactions/models.py:466
|
||||||
msgid "No description"
|
msgid "No description"
|
||||||
msgstr "Keine Beschreibung"
|
msgstr "Keine Beschreibung"
|
||||||
|
|
||||||
#: apps/transactions/models.py:510 templates/includes/sidebar.html:67
|
#: apps/transactions/models.py:514 templates/includes/sidebar.html:59
|
||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr "Jährlich"
|
msgstr "Jährlich"
|
||||||
|
|
||||||
#: apps/transactions/models.py:511 apps/users/models.py:464
|
#: apps/transactions/models.py:515 apps/users/models.py:464
|
||||||
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:61
|
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:53
|
||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr "Monatlich"
|
msgstr "Monatlich"
|
||||||
|
|
||||||
#: apps/transactions/models.py:512
|
#: apps/transactions/models.py:516
|
||||||
msgid "Weekly"
|
msgid "Weekly"
|
||||||
msgstr "Wöchentlich"
|
msgstr "Wöchentlich"
|
||||||
|
|
||||||
#: apps/transactions/models.py:513
|
#: apps/transactions/models.py:517
|
||||||
msgid "Daily"
|
msgid "Daily"
|
||||||
msgstr "Täglich"
|
msgstr "Täglich"
|
||||||
|
|
||||||
#: apps/transactions/models.py:526
|
#: apps/transactions/models.py:530
|
||||||
msgid "Number of Installments"
|
msgid "Number of Installments"
|
||||||
msgstr "Anzahl von Ratenzahlungen"
|
msgstr "Anzahl von Ratenzahlungen"
|
||||||
|
|
||||||
#: apps/transactions/models.py:531
|
#: apps/transactions/models.py:535
|
||||||
msgid "Installment Start"
|
msgid "Installment Start"
|
||||||
msgstr "Start der Ratenzahlung"
|
msgstr "Start der Ratenzahlung"
|
||||||
|
|
||||||
#: apps/transactions/models.py:532
|
#: apps/transactions/models.py:536
|
||||||
msgid "The installment number to start counting from"
|
msgid "The installment number to start counting from"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Die Zahl mit der bei der Zählung der Ratenzahlungen begonnen werden soll"
|
"Die Zahl mit der bei der Zählung der Ratenzahlungen begonnen werden soll"
|
||||||
|
|
||||||
#: apps/transactions/models.py:537 apps/transactions/models.py:772
|
#: apps/transactions/models.py:541 apps/transactions/models.py:776
|
||||||
msgid "Start Date"
|
msgid "Start Date"
|
||||||
msgstr "Startdatum"
|
msgstr "Startdatum"
|
||||||
|
|
||||||
#: apps/transactions/models.py:541 apps/transactions/models.py:773
|
#: apps/transactions/models.py:545 apps/transactions/models.py:777
|
||||||
msgid "End Date"
|
msgid "End Date"
|
||||||
msgstr "Enddatum"
|
msgstr "Enddatum"
|
||||||
|
|
||||||
#: apps/transactions/models.py:546
|
#: apps/transactions/models.py:550
|
||||||
msgid "Recurrence"
|
msgid "Recurrence"
|
||||||
msgstr "Regelmäßigkeit"
|
msgstr "Regelmäßigkeit"
|
||||||
|
|
||||||
#: apps/transactions/models.py:549
|
#: apps/transactions/models.py:553
|
||||||
msgid "Installment Amount"
|
msgid "Installment Amount"
|
||||||
msgstr "Ratenzahlungs-Wert"
|
msgstr "Ratenzahlungs-Wert"
|
||||||
|
|
||||||
#: apps/transactions/models.py:568 apps/transactions/models.py:792
|
#: apps/transactions/models.py:572 apps/transactions/models.py:796
|
||||||
msgid "Add description to transactions"
|
msgid "Add description to transactions"
|
||||||
msgstr "Beschreibung zu Transaktionen hinzufügen"
|
msgstr "Beschreibung zu Transaktionen hinzufügen"
|
||||||
|
|
||||||
#: apps/transactions/models.py:571 apps/transactions/models.py:795
|
#: apps/transactions/models.py:575 apps/transactions/models.py:799
|
||||||
msgid "Add notes to transactions"
|
msgid "Add notes to transactions"
|
||||||
msgstr "Notizen zu Transaktionen hinzufügen"
|
msgstr "Notizen zu Transaktionen hinzufügen"
|
||||||
|
|
||||||
#: apps/transactions/models.py:731
|
#: apps/transactions/models.py:735
|
||||||
msgid "day(s)"
|
msgid "day(s)"
|
||||||
msgstr "Tag(e)"
|
msgstr "Tag(e)"
|
||||||
|
|
||||||
#: apps/transactions/models.py:732
|
#: apps/transactions/models.py:736
|
||||||
msgid "week(s)"
|
msgid "week(s)"
|
||||||
msgstr "Woche(n)"
|
msgstr "Woche(n)"
|
||||||
|
|
||||||
#: apps/transactions/models.py:733
|
#: apps/transactions/models.py:737
|
||||||
msgid "month(s)"
|
msgid "month(s)"
|
||||||
msgstr "Monat(e)"
|
msgstr "Monat(e)"
|
||||||
|
|
||||||
#: apps/transactions/models.py:734
|
#: apps/transactions/models.py:738
|
||||||
msgid "year(s)"
|
msgid "year(s)"
|
||||||
msgstr "Jahr(e)"
|
msgstr "Jahr(e)"
|
||||||
|
|
||||||
#: apps/transactions/models.py:736
|
#: apps/transactions/models.py:740
|
||||||
#: templates/recurring_transactions/fragments/list.html:24
|
#: templates/recurring_transactions/fragments/list.html:24
|
||||||
msgid "Paused"
|
msgid "Paused"
|
||||||
msgstr "Pausiert"
|
msgstr "Pausiert"
|
||||||
|
|
||||||
#: apps/transactions/models.py:775
|
#: apps/transactions/models.py:779
|
||||||
msgid "Recurrence Type"
|
msgid "Recurrence Type"
|
||||||
msgstr "Regelmäßigkeit"
|
msgstr "Regelmäßigkeit"
|
||||||
|
|
||||||
#: apps/transactions/models.py:778
|
#: apps/transactions/models.py:782
|
||||||
msgid "Recurrence Interval"
|
msgid "Recurrence Interval"
|
||||||
msgstr "Wiederholungsintervall"
|
msgstr "Wiederholungsintervall"
|
||||||
|
|
||||||
#: apps/transactions/models.py:781
|
#: apps/transactions/models.py:785
|
||||||
msgid "Keep at most"
|
msgid "Keep at most"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:785
|
#: apps/transactions/models.py:789
|
||||||
msgid "Last Generated Date"
|
msgid "Last Generated Date"
|
||||||
msgstr "Letztes generiertes Datum"
|
msgstr "Letztes generiertes Datum"
|
||||||
|
|
||||||
#: apps/transactions/models.py:788
|
#: apps/transactions/models.py:792
|
||||||
msgid "Last Generated Reference Date"
|
msgid "Last Generated Reference Date"
|
||||||
msgstr "Letztes generiertes Referenzdatum"
|
msgstr "Letztes generiertes Referenzdatum"
|
||||||
|
|
||||||
#: apps/transactions/models.py:1034
|
#: apps/transactions/models.py:1038
|
||||||
#: apps/transactions/views/quick_transactions.py:177
|
#: apps/transactions/views/quick_transactions.py:177
|
||||||
#: apps/transactions/views/quick_transactions.py:186
|
#: apps/transactions/views/quick_transactions.py:186
|
||||||
#: apps/transactions/views/quick_transactions.py:188
|
#: apps/transactions/views/quick_transactions.py:188
|
||||||
@@ -1672,8 +1676,8 @@ msgstr "Letztes generiertes Referenzdatum"
|
|||||||
msgid "Quick Transaction"
|
msgid "Quick Transaction"
|
||||||
msgstr "Schnelle Transaktion"
|
msgstr "Schnelle Transaktion"
|
||||||
|
|
||||||
#: apps/transactions/models.py:1035 templates/includes/navbar.html:73
|
#: apps/transactions/models.py:1039 templates/includes/navbar.html:73
|
||||||
#: templates/includes/sidebar.html:108
|
#: templates/includes/sidebar.html:100
|
||||||
#: templates/quick_transactions/pages/index.html:5
|
#: templates/quick_transactions/pages/index.html:5
|
||||||
#: templates/quick_transactions/pages/index.html:11
|
#: templates/quick_transactions/pages/index.html:11
|
||||||
msgid "Quick Transactions"
|
msgid "Quick Transactions"
|
||||||
@@ -1993,7 +1997,7 @@ msgid "All Transactions"
|
|||||||
msgstr "Alle Transaktionen"
|
msgstr "Alle Transaktionen"
|
||||||
|
|
||||||
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
||||||
#: templates/includes/sidebar.html:73
|
#: templates/includes/sidebar.html:65
|
||||||
msgid "Calendar"
|
msgid "Calendar"
|
||||||
msgstr "Kalender"
|
msgstr "Kalender"
|
||||||
|
|
||||||
@@ -2105,6 +2109,7 @@ msgstr "Bearbeiten"
|
|||||||
#: templates/quick_transactions/fragments/list.html:34
|
#: templates/quick_transactions/fragments/list.html:34
|
||||||
#: templates/recurring_transactions/fragments/table.html:93
|
#: templates/recurring_transactions/fragments/table.html:93
|
||||||
#: templates/rules/fragments/list.html:45
|
#: templates/rules/fragments/list.html:45
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:61
|
#: templates/rules/fragments/transaction_rule/view.html:61
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:96
|
#: templates/rules/fragments/transaction_rule/view.html:96
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:137
|
#: templates/rules/fragments/transaction_rule/view.html:137
|
||||||
@@ -2230,6 +2235,8 @@ msgid "Current balance"
|
|||||||
msgstr "Aktueller Saldo"
|
msgstr "Aktueller Saldo"
|
||||||
|
|
||||||
#: templates/accounts/fragments/account_reconciliation.html:39
|
#: templates/accounts/fragments/account_reconciliation.html:39
|
||||||
|
#: templates/net_worth/net_worth.html:105
|
||||||
|
#: templates/net_worth/net_worth.html:362
|
||||||
msgid "Difference"
|
msgid "Difference"
|
||||||
msgstr "Differenz"
|
msgstr "Differenz"
|
||||||
|
|
||||||
@@ -2324,7 +2331,7 @@ msgid "Pick a month"
|
|||||||
msgstr "Monat auswählen"
|
msgstr "Monat auswählen"
|
||||||
|
|
||||||
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
||||||
#: templates/includes/sidebar.html:53
|
#: templates/includes/sidebar.html:45
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Schließen"
|
msgstr "Schließen"
|
||||||
|
|
||||||
@@ -2607,19 +2614,19 @@ msgstr "Aktueller Preis"
|
|||||||
msgid "Amount Bought"
|
msgid "Amount Bought"
|
||||||
msgstr "Anzahl gekauft"
|
msgstr "Anzahl gekauft"
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:390
|
#: templates/dca/fragments/strategy/details.html:392
|
||||||
msgid "Entry Price vs Current Price"
|
msgid "Entry Price vs Current Price"
|
||||||
msgstr "Einstiegspreis zu Aktuellem Preis"
|
msgstr "Einstiegspreis zu Aktuellem Preis"
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:406
|
#: templates/dca/fragments/strategy/details.html:408
|
||||||
msgid "Days Between Investments"
|
msgid "Days Between Investments"
|
||||||
msgstr "Tage zwischen Investitionen"
|
msgstr "Tage zwischen Investitionen"
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:453
|
#: templates/dca/fragments/strategy/details.html:455
|
||||||
msgid "Investment Frequency"
|
msgid "Investment Frequency"
|
||||||
msgstr "Investitions-Häufigkeit"
|
msgstr "Investitions-Häufigkeit"
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:455
|
#: templates/dca/fragments/strategy/details.html:457
|
||||||
msgid "The straighter the blue line, the more consistent your DCA strategy is."
|
msgid "The straighter the blue line, the more consistent your DCA strategy is."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Je gerader die blaue Linie, desto gleichmäßiger ist deine DCA-Strategie."
|
"Je gerader die blaue Linie, desto gleichmäßiger ist deine DCA-Strategie."
|
||||||
@@ -2660,7 +2667,7 @@ msgid "Edit exchange rate"
|
|||||||
msgstr "Umrechnungskurs bearbeiten"
|
msgstr "Umrechnungskurs bearbeiten"
|
||||||
|
|
||||||
#: templates/exchange_rates/fragments/list.html:25
|
#: templates/exchange_rates/fragments/list.html:25
|
||||||
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:93
|
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:85
|
||||||
#: templates/installment_plans/fragments/list.html:21
|
#: templates/installment_plans/fragments/list.html:21
|
||||||
#: templates/yearly_overview/pages/overview_by_account.html:105
|
#: templates/yearly_overview/pages/overview_by_account.html:105
|
||||||
#: templates/yearly_overview/pages/overview_by_currency.html:107
|
#: templates/yearly_overview/pages/overview_by_currency.html:107
|
||||||
@@ -2717,7 +2724,7 @@ msgid "No services configured"
|
|||||||
msgstr "Keine Dienste konfiguriert"
|
msgstr "Keine Dienste konfiguriert"
|
||||||
|
|
||||||
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
|
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
|
||||||
#: templates/includes/sidebar.html:247
|
#: templates/includes/sidebar.html:239
|
||||||
msgid "Export and Restore"
|
msgid "Export and Restore"
|
||||||
msgstr "Exportieren und Wiederherstellen"
|
msgstr "Exportieren und Wiederherstellen"
|
||||||
|
|
||||||
@@ -2816,72 +2823,72 @@ msgstr "Navigation umschalten"
|
|||||||
msgid "Overview"
|
msgid "Overview"
|
||||||
msgstr "Übersicht"
|
msgstr "Übersicht"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
|
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:77
|
||||||
msgid "Net Worth"
|
msgid "Net Worth"
|
||||||
msgstr "Nettovermögen"
|
msgstr "Nettovermögen"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:45
|
#: templates/includes/navbar.html:45
|
||||||
#: templates/insights/fragments/category_overview/index.html:65
|
#: templates/insights/fragments/category_overview/index.html:65
|
||||||
#: templates/net_worth/net_worth.html:22
|
#: templates/net_worth/net_worth.html:23
|
||||||
msgid "Current"
|
msgid "Current"
|
||||||
msgstr "Aktuell"
|
msgstr "Aktuell"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:79
|
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:71
|
||||||
#: templates/insights/pages/index.html:5
|
#: templates/insights/pages/index.html:5
|
||||||
msgid "Insights"
|
msgid "Insights"
|
||||||
msgstr "Einblicke"
|
msgstr "Einblicke"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
|
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:93
|
||||||
msgid "Trash Can"
|
msgid "Trash Can"
|
||||||
msgstr "Papierkorb"
|
msgstr "Papierkorb"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
|
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:118
|
||||||
msgid "Tools"
|
msgid "Tools"
|
||||||
msgstr "Tools"
|
msgstr "Tools"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:128
|
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:120
|
||||||
msgid "Dollar Cost Average Tracker"
|
msgid "Dollar Cost Average Tracker"
|
||||||
msgstr "\"Dollar Cost Average\"-Tracker"
|
msgstr "\"Dollar Cost Average\"-Tracker"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:134
|
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:126
|
||||||
#: templates/mini_tools/unit_price_calculator.html:5
|
#: templates/mini_tools/unit_price_calculator.html:5
|
||||||
#: templates/mini_tools/unit_price_calculator.html:10
|
#: templates/mini_tools/unit_price_calculator.html:10
|
||||||
msgid "Unit Price Calculator"
|
msgid "Unit Price Calculator"
|
||||||
msgstr "Einzelpreis-Rechner"
|
msgstr "Einzelpreis-Rechner"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:140
|
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:132
|
||||||
#: templates/mini_tools/currency_converter/currency_converter.html:8
|
#: templates/mini_tools/currency_converter/currency_converter.html:8
|
||||||
#: templates/mini_tools/currency_converter/currency_converter.html:15
|
#: templates/mini_tools/currency_converter/currency_converter.html:15
|
||||||
msgid "Currency Converter"
|
msgid "Currency Converter"
|
||||||
msgstr "Währungs-Umrechner"
|
msgstr "Währungs-Umrechner"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
|
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:150
|
||||||
#: templates/includes/sidebar.html:171
|
#: templates/includes/sidebar.html:163
|
||||||
msgid "Management"
|
msgid "Management"
|
||||||
msgstr "Verwaltung"
|
msgstr "Verwaltung"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
|
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:224
|
||||||
msgid "Automation"
|
msgid "Automation"
|
||||||
msgstr "Automatisierung"
|
msgstr "Automatisierung"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
|
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:253
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "Admin"
|
msgstr "Admin"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:270
|
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:262
|
||||||
msgid "Only use this if you know what you're doing"
|
msgid "Only use this if you know what you're doing"
|
||||||
msgstr "Nur benutzen, wenn du weißt was du tust"
|
msgstr "Nur benutzen, wenn du weißt was du tust"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
|
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:261
|
||||||
msgid "Django Admin"
|
msgid "Django Admin"
|
||||||
msgstr "Django Admin"
|
msgstr "Django AdministratorIn"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
|
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:276
|
||||||
msgid "is available"
|
msgid "is available"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
||||||
#: templates/includes/sidebar.html:290
|
#: templates/includes/sidebar.html:282
|
||||||
msgid "Calculator"
|
msgid "Calculator"
|
||||||
msgstr "Rechner"
|
msgstr "Rechner"
|
||||||
|
|
||||||
@@ -3223,25 +3230,31 @@ msgstr "Transaktionen filtern"
|
|||||||
msgid "Order by"
|
msgid "Order by"
|
||||||
msgstr "Sortieren nach"
|
msgstr "Sortieren nach"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:40
|
#: templates/net_worth/net_worth.html:42
|
||||||
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
||||||
msgid "By currency"
|
msgid "By currency"
|
||||||
msgstr "Nach Währung"
|
msgstr "Nach Währung"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:75
|
#: templates/net_worth/net_worth.html:78
|
||||||
msgid "Consolidated"
|
msgid "Consolidated"
|
||||||
msgstr "Zusammengefasst"
|
msgstr "Zusammengefasst"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:104
|
#: templates/net_worth/net_worth.html:101
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Evolution by account"
|
||||||
|
msgid "Evolution"
|
||||||
|
msgstr "Verlauf nach Konto"
|
||||||
|
|
||||||
|
#: templates/net_worth/net_worth.html:128
|
||||||
#: templates/yearly_overview/pages/overview_by_account.html:7
|
#: templates/yearly_overview/pages/overview_by_account.html:7
|
||||||
msgid "By account"
|
msgid "By account"
|
||||||
msgstr "Nach Konto"
|
msgstr "Nach Konto"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:211
|
#: templates/net_worth/net_worth.html:236
|
||||||
msgid "Evolution by currency"
|
msgid "Evolution by currency"
|
||||||
msgstr "Verlauf nach Währung"
|
msgstr "Verlauf nach Währung"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:275
|
#: templates/net_worth/net_worth.html:300
|
||||||
msgid "Evolution by account"
|
msgid "Evolution by account"
|
||||||
msgstr "Verlauf nach Konto"
|
msgstr "Verlauf nach Konto"
|
||||||
|
|
||||||
@@ -3262,10 +3275,8 @@ msgid "Edit quick transaction"
|
|||||||
msgstr "Transaktion bearbeiten"
|
msgstr "Transaktion bearbeiten"
|
||||||
|
|
||||||
#: templates/quick_transactions/fragments/list.html:40
|
#: templates/quick_transactions/fragments/list.html:40
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Yes, delete them!"
|
|
||||||
msgid "This will delete this item"
|
msgid "This will delete this item"
|
||||||
msgstr "Ja, löschen!"
|
msgstr "Dieser Artikel wird gelöscht"
|
||||||
|
|
||||||
#: templates/recurring_transactions/fragments/add.html:5
|
#: templates/recurring_transactions/fragments/add.html:5
|
||||||
msgid "Add recurring transaction"
|
msgid "Add recurring transaction"
|
||||||
@@ -3346,11 +3357,9 @@ msgid "Add transaction rule"
|
|||||||
msgstr "Transaktions-Regel hinzufügen"
|
msgstr "Transaktions-Regel hinzufügen"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
#: templates/rules/fragments/transaction_rule/view.html:127
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
msgid "Create"
|
||||||
#: templates/rules/fragments/transaction_rule/edit.html:5
|
msgstr ""
|
||||||
msgid "Edit transaction rule"
|
|
||||||
msgstr "Transaktions-Regeln bearbeiten"
|
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:8
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:8
|
||||||
msgid "Visual"
|
msgid "Visual"
|
||||||
@@ -3395,6 +3404,10 @@ msgstr "auf"
|
|||||||
msgid "No transaction found, a new one will be created"
|
msgid "No transaction found, a new one will be created"
|
||||||
msgstr "Keine Transaktionen an diesem Datum"
|
msgstr "Keine Transaktionen an diesem Datum"
|
||||||
|
|
||||||
|
#: templates/rules/fragments/transaction_rule/edit.html:5
|
||||||
|
msgid "Edit transaction rule"
|
||||||
|
msgstr "Transaktions-Regeln bearbeiten"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/transaction_rule_action/add.html:5
|
#: templates/rules/fragments/transaction_rule/transaction_rule_action/add.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/update_or_create_transaction_rule_action/add.html:5
|
#: templates/rules/fragments/transaction_rule/update_or_create_transaction_rule_action/add.html:5
|
||||||
msgid "Add action to transaction rule"
|
msgid "Add action to transaction rule"
|
||||||
@@ -3425,10 +3438,6 @@ msgstr "Zum Anzeigen bearbeiten"
|
|||||||
msgid "This rule has no actions"
|
msgid "This rule has no actions"
|
||||||
msgstr "Diese Regel hat keine Aktionen"
|
msgstr "Diese Regel hat keine Aktionen"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:127
|
|
||||||
msgid "Create"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:144
|
#: templates/rules/fragments/transaction_rule/view.html:144
|
||||||
msgid "Add new"
|
msgid "Add new"
|
||||||
msgstr "Neue hinzufügen"
|
msgstr "Neue hinzufügen"
|
||||||
|
|||||||
+152
-143
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-07 13:08+0000\n"
|
"POT-Creation-Date: 2025-09-20 14:08+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -22,7 +22,7 @@ msgstr ""
|
|||||||
msgid "Group name"
|
msgid "Group name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/accounts/forms.py:42 apps/accounts/forms.py:118
|
#: apps/accounts/forms.py:42 apps/accounts/forms.py:112
|
||||||
#: apps/currencies/forms.py:55 apps/currencies/forms.py:93
|
#: 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/currencies/forms.py:146 apps/dca/forms.py:49 apps/dca/forms.py:224
|
||||||
#: apps/import_app/forms.py:34 apps/rules/forms.py:57 apps/rules/forms.py:101
|
#: apps/import_app/forms.py:34 apps/rules/forms.py:57 apps/rules/forms.py:101
|
||||||
@@ -32,11 +32,12 @@ msgstr ""
|
|||||||
#: apps/transactions/forms.py:953 apps/transactions/forms.py:988
|
#: apps/transactions/forms.py:953 apps/transactions/forms.py:988
|
||||||
#: apps/transactions/forms.py:1142 apps/users/forms.py:217
|
#: apps/transactions/forms.py:1142 apps/users/forms.py:217
|
||||||
#: apps/users/forms.py:379
|
#: apps/users/forms.py:379
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:132
|
#: templates/rules/fragments/transaction_rule/view.html:132
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/accounts/forms.py:50 apps/accounts/forms.py:126
|
#: apps/accounts/forms.py:50 apps/accounts/forms.py:120
|
||||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
||||||
#: apps/currencies/forms.py:101 apps/currencies/forms.py:154
|
#: apps/currencies/forms.py:101 apps/currencies/forms.py:154
|
||||||
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
|
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
|
||||||
@@ -70,35 +71,35 @@ msgstr ""
|
|||||||
msgid "Group"
|
msgid "Group"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/accounts/forms.py:135
|
#: apps/accounts/forms.py:129
|
||||||
msgid "New balance"
|
msgid "New balance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/accounts/forms.py:141 apps/dca/forms.py:85 apps/dca/forms.py:92
|
#: apps/accounts/forms.py:135 apps/dca/forms.py:85 apps/dca/forms.py:92
|
||||||
#: apps/insights/forms.py:118 apps/rules/forms.py:185 apps/rules/forms.py:201
|
#: apps/insights/forms.py:118 apps/rules/forms.py:185 apps/rules/forms.py:201
|
||||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:263
|
#: apps/transactions/forms.py:44 apps/transactions/forms.py:263
|
||||||
#: apps/transactions/forms.py:438 apps/transactions/forms.py:540
|
#: apps/transactions/forms.py:438 apps/transactions/forms.py:540
|
||||||
#: apps/transactions/forms.py:547 apps/transactions/forms.py:759
|
#: apps/transactions/forms.py:547 apps/transactions/forms.py:759
|
||||||
#: apps/transactions/forms.py:1020 apps/transactions/models.py:322
|
#: apps/transactions/forms.py:1020 apps/transactions/models.py:323
|
||||||
#: apps/transactions/models.py:556 apps/transactions/models.py:756
|
#: apps/transactions/models.py:560 apps/transactions/models.py:760
|
||||||
#: apps/transactions/models.py:1006
|
#: apps/transactions/models.py:1010
|
||||||
#: templates/insights/fragments/category_overview/index.html:78
|
#: templates/insights/fragments/category_overview/index.html:78
|
||||||
#: templates/insights/fragments/category_overview/index.html:530
|
#: templates/insights/fragments/category_overview/index.html:530
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/accounts/forms.py:148 apps/dca/forms.py:101 apps/dca/forms.py:109
|
#: apps/accounts/forms.py:142 apps/dca/forms.py:101 apps/dca/forms.py:109
|
||||||
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135
|
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135
|
||||||
#: apps/rules/forms.py:188 apps/rules/forms.py:198 apps/rules/models.py:45
|
#: apps/rules/forms.py:188 apps/rules/forms.py:198 apps/rules/models.py:45
|
||||||
#: apps/rules/models.py:315 apps/transactions/filters.py:69
|
#: apps/rules/models.py:315 apps/transactions/filters.py:69
|
||||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:271
|
#: apps/transactions/forms.py:52 apps/transactions/forms.py:271
|
||||||
#: apps/transactions/forms.py:446 apps/transactions/forms.py:556
|
#: apps/transactions/forms.py:446 apps/transactions/forms.py:556
|
||||||
#: apps/transactions/forms.py:564 apps/transactions/forms.py:752
|
#: apps/transactions/forms.py:564 apps/transactions/forms.py:752
|
||||||
#: apps/transactions/forms.py:1013 apps/transactions/models.py:328
|
#: apps/transactions/forms.py:1013 apps/transactions/models.py:329
|
||||||
#: apps/transactions/models.py:558 apps/transactions/models.py:760
|
#: apps/transactions/models.py:562 apps/transactions/models.py:764
|
||||||
#: apps/transactions/models.py:1012 templates/includes/navbar.html:111
|
#: apps/transactions/models.py:1016 templates/includes/navbar.html:111
|
||||||
#: templates/includes/sidebar.html:192
|
#: templates/includes/sidebar.html:184
|
||||||
#: templates/insights/fragments/category_overview/index.html:36
|
#: templates/insights/fragments/category_overview/index.html:36
|
||||||
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
@@ -106,8 +107,8 @@ msgstr ""
|
|||||||
|
|
||||||
#: apps/accounts/models.py:12 apps/accounts/models.py:29 apps/dca/models.py:13
|
#: apps/accounts/models.py:12 apps/accounts/models.py:29 apps/dca/models.py:13
|
||||||
#: apps/import_app/models.py:14 apps/rules/models.py:13
|
#: apps/import_app/models.py:14 apps/rules/models.py:13
|
||||||
#: apps/transactions/models.py:214 apps/transactions/models.py:239
|
#: apps/transactions/models.py:215 apps/transactions/models.py:240
|
||||||
#: apps/transactions/models.py:263 apps/transactions/models.py:974
|
#: apps/transactions/models.py:264 apps/transactions/models.py:978
|
||||||
#: templates/account_groups/fragments/list.html:25
|
#: templates/account_groups/fragments/list.html:25
|
||||||
#: templates/accounts/fragments/list.html:25
|
#: templates/accounts/fragments/list.html:25
|
||||||
#: templates/categories/fragments/table.html:16
|
#: templates/categories/fragments/table.html:16
|
||||||
@@ -130,7 +131,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
||||||
#: templates/account_groups/pages/index.html:4
|
#: templates/account_groups/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:212
|
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:204
|
||||||
msgid "Account Groups"
|
msgid "Account Groups"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -176,9 +177,9 @@ msgstr ""
|
|||||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:283
|
#: apps/transactions/forms.py:64 apps/transactions/forms.py:283
|
||||||
#: apps/transactions/forms.py:405 apps/transactions/forms.py:744
|
#: apps/transactions/forms.py:405 apps/transactions/forms.py:744
|
||||||
#: apps/transactions/forms.py:1005 apps/transactions/models.py:294
|
#: apps/transactions/forms.py:1005 apps/transactions/models.py:295
|
||||||
#: apps/transactions/models.py:516 apps/transactions/models.py:738
|
#: apps/transactions/models.py:520 apps/transactions/models.py:742
|
||||||
#: apps/transactions/models.py:980
|
#: apps/transactions/models.py:984
|
||||||
#: templates/installment_plans/fragments/table.html:17
|
#: templates/installment_plans/fragments/table.html:17
|
||||||
#: templates/quick_transactions/fragments/list.html:14
|
#: templates/quick_transactions/fragments/list.html:14
|
||||||
#: templates/recurring_transactions/fragments/table.html:19
|
#: templates/recurring_transactions/fragments/table.html:19
|
||||||
@@ -191,8 +192,8 @@ msgstr ""
|
|||||||
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
||||||
#: templates/accounts/fragments/list.html:5
|
#: templates/accounts/fragments/list.html:5
|
||||||
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
||||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
|
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:196
|
||||||
#: templates/includes/sidebar.html:206
|
#: templates/includes/sidebar.html:198
|
||||||
#: templates/monthly_overview/pages/overview.html:94
|
#: templates/monthly_overview/pages/overview.html:94
|
||||||
#: templates/transactions/fragments/summary.html:12
|
#: templates/transactions/fragments/summary.html:12
|
||||||
#: templates/transactions/pages/transactions.html:137
|
#: templates/transactions/pages/transactions.html:137
|
||||||
@@ -495,7 +496,7 @@ msgstr ""
|
|||||||
#: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:180
|
#: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:180
|
||||||
#: apps/rules/forms.py:194 apps/rules/models.py:38 apps/rules/models.py:279
|
#: apps/rules/forms.py:194 apps/rules/models.py:38 apps/rules/models.py:279
|
||||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:410
|
#: apps/transactions/forms.py:68 apps/transactions/forms.py:410
|
||||||
#: apps/transactions/forms.py:568 apps/transactions/models.py:304
|
#: apps/transactions/forms.py:568 apps/transactions/models.py:305
|
||||||
#: templates/dca/fragments/strategy/details.html:52
|
#: templates/dca/fragments/strategy/details.html:52
|
||||||
#: templates/exchange_rates/fragments/table.html:10
|
#: templates/exchange_rates/fragments/table.html:10
|
||||||
#: templates/exchange_rates_services/fragments/table.html:10
|
#: templates/exchange_rates_services/fragments/table.html:10
|
||||||
@@ -518,8 +519,8 @@ msgstr ""
|
|||||||
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60
|
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60
|
||||||
#: templates/currencies/fragments/list.html:5
|
#: templates/currencies/fragments/list.html:5
|
||||||
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
||||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
|
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:210
|
||||||
#: templates/includes/sidebar.html:220
|
#: templates/includes/sidebar.html:212
|
||||||
#: templates/monthly_overview/pages/overview.html:81
|
#: templates/monthly_overview/pages/overview.html:81
|
||||||
#: templates/transactions/fragments/summary.html:8
|
#: templates/transactions/fragments/summary.html:8
|
||||||
#: templates/transactions/pages/transactions.html:124
|
#: templates/transactions/pages/transactions.html:124
|
||||||
@@ -554,7 +555,7 @@ msgstr ""
|
|||||||
#: apps/currencies/models.py:82 apps/export_app/forms.py:68
|
#: apps/currencies/models.py:82 apps/export_app/forms.py:68
|
||||||
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
|
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
|
||||||
#: templates/exchange_rates/pages/index.html:4
|
#: templates/exchange_rates/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:226
|
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:218
|
||||||
msgid "Exchange Rates"
|
msgid "Exchange Rates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -582,8 +583,8 @@ msgstr ""
|
|||||||
msgid "Service Type"
|
msgid "Service Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/currencies/models.py:118 apps/transactions/models.py:218
|
#: apps/currencies/models.py:118 apps/transactions/models.py:219
|
||||||
#: apps/transactions/models.py:242 apps/transactions/models.py:266
|
#: apps/transactions/models.py:243 apps/transactions/models.py:267
|
||||||
#: templates/categories/fragments/list.html:21
|
#: templates/categories/fragments/list.html:21
|
||||||
#: templates/entities/fragments/list.html:21
|
#: templates/entities/fragments/list.html:21
|
||||||
#: templates/recurring_transactions/fragments/list.html:21
|
#: templates/recurring_transactions/fragments/list.html:21
|
||||||
@@ -760,8 +761,8 @@ msgstr ""
|
|||||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:184
|
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:184
|
||||||
#: apps/rules/forms.py:200 apps/rules/models.py:43 apps/rules/models.py:295
|
#: apps/rules/forms.py:200 apps/rules/models.py:43 apps/rules/models.py:295
|
||||||
#: apps/transactions/forms.py:432 apps/transactions/forms.py:584
|
#: apps/transactions/forms.py:432 apps/transactions/forms.py:584
|
||||||
#: apps/transactions/models.py:318 apps/transactions/models.py:565
|
#: apps/transactions/models.py:319 apps/transactions/models.py:569
|
||||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1002
|
#: apps/transactions/models.py:770 apps/transactions/models.py:1006
|
||||||
msgid "Notes"
|
msgid "Notes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -818,15 +819,15 @@ msgid "Entry deleted successfully"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131
|
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131
|
||||||
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:263
|
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:255
|
||||||
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
|
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
||||||
#: apps/transactions/models.py:379 templates/includes/navbar.html:58
|
#: apps/transactions/models.py:380 templates/includes/navbar.html:58
|
||||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
|
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:83
|
||||||
#: templates/includes/sidebar.html:184
|
#: templates/includes/sidebar.html:176
|
||||||
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
||||||
#: templates/recurring_transactions/fragments/table.html:39
|
#: templates/recurring_transactions/fragments/table.html:39
|
||||||
#: templates/transactions/pages/transactions.html:5
|
#: templates/transactions/pages/transactions.html:5
|
||||||
@@ -836,7 +837,7 @@ msgstr ""
|
|||||||
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134
|
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134
|
||||||
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
||||||
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
||||||
#: templates/includes/sidebar.html:186
|
#: templates/includes/sidebar.html:178
|
||||||
msgid "Categories"
|
msgid "Categories"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -845,27 +846,27 @@ msgstr ""
|
|||||||
#: apps/rules/models.py:307 apps/transactions/filters.py:74
|
#: apps/rules/models.py:307 apps/transactions/filters.py:74
|
||||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:279
|
#: apps/transactions/forms.py:60 apps/transactions/forms.py:279
|
||||||
#: apps/transactions/forms.py:454 apps/transactions/forms.py:767
|
#: apps/transactions/forms.py:454 apps/transactions/forms.py:767
|
||||||
#: apps/transactions/forms.py:1028 apps/transactions/models.py:277
|
#: apps/transactions/forms.py:1028 apps/transactions/models.py:278
|
||||||
#: apps/transactions/models.py:333 apps/transactions/models.py:561
|
#: apps/transactions/models.py:334 apps/transactions/models.py:565
|
||||||
#: apps/transactions/models.py:763 apps/transactions/models.py:1017
|
#: apps/transactions/models.py:767 apps/transactions/models.py:1021
|
||||||
#: templates/entities/fragments/list.html:5
|
#: templates/entities/fragments/list.html:5
|
||||||
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
|
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
|
||||||
#: templates/includes/sidebar.html:198
|
#: templates/includes/sidebar.html:190
|
||||||
#: templates/insights/fragments/category_overview/index.html:49
|
#: templates/insights/fragments/category_overview/index.html:49
|
||||||
msgid "Entities"
|
msgid "Entities"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
||||||
#: apps/transactions/models.py:803 templates/includes/navbar.html:77
|
#: apps/transactions/models.py:807 templates/includes/navbar.html:77
|
||||||
#: templates/includes/sidebar.html:120
|
#: templates/includes/sidebar.html:112
|
||||||
#: templates/recurring_transactions/fragments/list.html:5
|
#: templates/recurring_transactions/fragments/list.html:5
|
||||||
#: templates/recurring_transactions/pages/index.html:4
|
#: templates/recurring_transactions/pages/index.html:4
|
||||||
msgid "Recurring Transactions"
|
msgid "Recurring Transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
||||||
#: apps/transactions/models.py:579 templates/includes/navbar.html:75
|
#: apps/transactions/models.py:583 templates/includes/navbar.html:75
|
||||||
#: templates/includes/sidebar.html:114
|
#: templates/includes/sidebar.html:106
|
||||||
#: templates/installment_plans/fragments/list.html:5
|
#: templates/installment_plans/fragments/list.html:5
|
||||||
#: templates/installment_plans/pages/index.html:4
|
#: templates/installment_plans/pages/index.html:4
|
||||||
msgid "Installment Plans"
|
msgid "Installment Plans"
|
||||||
@@ -874,12 +875,12 @@ msgstr ""
|
|||||||
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
||||||
#: templates/exchange_rates_services/fragments/list.html:6
|
#: templates/exchange_rates_services/fragments/list.html:6
|
||||||
#: templates/exchange_rates_services/pages/index.html:4
|
#: templates/exchange_rates_services/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:254
|
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:246
|
||||||
msgid "Automatic Exchange Rates"
|
msgid "Automatic Exchange Rates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135
|
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135
|
||||||
#: templates/includes/sidebar.html:234 templates/rules/fragments/list.html:5
|
#: templates/includes/sidebar.html:226 templates/rules/fragments/list.html:5
|
||||||
#: templates/rules/pages/index.html:4
|
#: templates/rules/pages/index.html:4
|
||||||
msgid "Rules"
|
msgid "Rules"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -949,7 +950,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: apps/import_app/forms.py:61
|
#: apps/import_app/forms.py:61
|
||||||
#: templates/import_app/fragments/profiles/list.html:62
|
#: templates/import_app/fragments/profiles/list.html:62
|
||||||
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:240
|
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:232
|
||||||
msgid "Import"
|
msgid "Import"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1110,15 +1111,15 @@ msgstr ""
|
|||||||
|
|
||||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:36
|
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:36
|
||||||
#: apps/rules/models.py:271 apps/transactions/forms.py:396
|
#: apps/rules/models.py:271 apps/transactions/forms.py:396
|
||||||
#: apps/transactions/models.py:301 apps/transactions/models.py:521
|
#: apps/transactions/models.py:302 apps/transactions/models.py:525
|
||||||
#: apps/transactions/models.py:744 apps/transactions/models.py:987
|
#: apps/transactions/models.py:748 apps/transactions/models.py:991
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:37
|
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:37
|
||||||
#: apps/rules/models.py:275 apps/transactions/filters.py:23
|
#: apps/rules/models.py:275 apps/transactions/filters.py:23
|
||||||
#: apps/transactions/forms.py:400 apps/transactions/models.py:303
|
#: apps/transactions/forms.py:400 apps/transactions/models.py:304
|
||||||
#: apps/transactions/models.py:989 templates/cotton/transaction/item.html:21
|
#: apps/transactions/models.py:993 templates/cotton/transaction/item.html:21
|
||||||
#: templates/cotton/transaction/item.html:32
|
#: templates/cotton/transaction/item.html:32
|
||||||
#: templates/transactions/widgets/paid_toggle_button.html:12
|
#: templates/transactions/widgets/paid_toggle_button.html:12
|
||||||
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:16
|
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:16
|
||||||
@@ -1128,15 +1129,15 @@ msgstr ""
|
|||||||
#: apps/rules/forms.py:181 apps/rules/forms.py:195 apps/rules/models.py:39
|
#: apps/rules/forms.py:181 apps/rules/forms.py:195 apps/rules/models.py:39
|
||||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||||
#: apps/transactions/forms.py:416 apps/transactions/forms.py:571
|
#: apps/transactions/forms.py:416 apps/transactions/forms.py:571
|
||||||
#: apps/transactions/forms.py:773 apps/transactions/models.py:305
|
#: apps/transactions/forms.py:773 apps/transactions/models.py:306
|
||||||
#: apps/transactions/models.py:539 apps/transactions/models.py:768
|
#: apps/transactions/models.py:543 apps/transactions/models.py:772
|
||||||
msgid "Reference Date"
|
msgid "Reference Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:182 apps/rules/forms.py:196 apps/rules/models.py:41
|
#: apps/rules/forms.py:182 apps/rules/forms.py:196 apps/rules/models.py:41
|
||||||
#: apps/rules/models.py:287 apps/transactions/forms.py:423
|
#: apps/rules/models.py:287 apps/transactions/forms.py:423
|
||||||
#: apps/transactions/models.py:311 apps/transactions/models.py:749
|
#: apps/transactions/models.py:312 apps/transactions/models.py:753
|
||||||
#: apps/transactions/models.py:995 templates/insights/fragments/sankey.html:95
|
#: apps/transactions/models.py:999 templates/insights/fragments/sankey.html:95
|
||||||
#: templates/installment_plans/fragments/table.html:18
|
#: templates/installment_plans/fragments/table.html:18
|
||||||
#: templates/quick_transactions/fragments/list.html:15
|
#: templates/quick_transactions/fragments/list.html:15
|
||||||
#: templates/recurring_transactions/fragments/table.html:20
|
#: templates/recurring_transactions/fragments/table.html:20
|
||||||
@@ -1146,27 +1147,27 @@ msgstr ""
|
|||||||
#: apps/rules/forms.py:183 apps/rules/forms.py:197 apps/rules/models.py:14
|
#: apps/rules/forms.py:183 apps/rules/forms.py:197 apps/rules/models.py:14
|
||||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:575
|
#: apps/transactions/forms.py:427 apps/transactions/forms.py:575
|
||||||
#: apps/transactions/models.py:316 apps/transactions/models.py:523
|
#: apps/transactions/models.py:317 apps/transactions/models.py:527
|
||||||
#: apps/transactions/models.py:752 apps/transactions/models.py:1000
|
#: apps/transactions/models.py:756 apps/transactions/models.py:1004
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:186 apps/rules/forms.py:202 apps/rules/models.py:47
|
#: apps/rules/forms.py:186 apps/rules/forms.py:202 apps/rules/models.py:47
|
||||||
#: apps/rules/models.py:299 apps/transactions/models.py:355
|
#: apps/rules/models.py:299 apps/transactions/models.py:356
|
||||||
#: apps/transactions/models.py:1022
|
#: apps/transactions/models.py:1026
|
||||||
msgid "Internal Note"
|
msgid "Internal Note"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:187 apps/rules/forms.py:203 apps/rules/models.py:48
|
#: apps/rules/forms.py:187 apps/rules/forms.py:203 apps/rules/models.py:48
|
||||||
#: apps/rules/models.py:303 apps/transactions/models.py:357
|
#: apps/rules/models.py:303 apps/transactions/models.py:358
|
||||||
#: apps/transactions/models.py:1024
|
#: apps/transactions/models.py:1028
|
||||||
msgid "Internal ID"
|
msgid "Internal ID"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:190 apps/rules/forms.py:204 apps/rules/models.py:40
|
#: apps/rules/forms.py:190 apps/rules/forms.py:204 apps/rules/models.py:40
|
||||||
#: apps/rules/models.py:319 apps/transactions/forms.py:588
|
#: apps/rules/models.py:319 apps/transactions/forms.py:588
|
||||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
#: apps/transactions/models.py:216 apps/transactions/models.py:307
|
||||||
#: apps/transactions/models.py:990
|
#: apps/transactions/models.py:994
|
||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1179,7 +1180,7 @@ msgid "Set Values"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:415 apps/rules/forms.py:452 apps/rules/forms.py:489
|
#: apps/rules/forms.py:415 apps/rules/forms.py:452 apps/rules/forms.py:489
|
||||||
#: apps/transactions/models.py:378
|
#: apps/transactions/models.py:379
|
||||||
msgid "Transaction"
|
msgid "Transaction"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1188,6 +1189,9 @@ msgid "Type to search for a transaction"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:431 apps/rules/forms.py:468 apps/rules/forms.py:504
|
#: apps/rules/forms.py:431 apps/rules/forms.py:468 apps/rules/forms.py:504
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:121
|
#: templates/rules/fragments/transaction_rule/view.html:121
|
||||||
msgid "Test"
|
msgid "Test"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1313,7 +1317,7 @@ msgstr ""
|
|||||||
#: apps/transactions/filters.py:24 templates/cotton/transaction/item.html:21
|
#: apps/transactions/filters.py:24 templates/cotton/transaction/item.html:21
|
||||||
#: templates/cotton/transaction/item.html:32 templates/includes/navbar.html:47
|
#: templates/cotton/transaction/item.html:32 templates/includes/navbar.html:47
|
||||||
#: templates/insights/fragments/category_overview/index.html:61
|
#: templates/insights/fragments/category_overview/index.html:61
|
||||||
#: templates/net_worth/net_worth.html:32
|
#: templates/net_worth/net_worth.html:33
|
||||||
#: templates/transactions/widgets/paid_toggle_button.html:8
|
#: templates/transactions/widgets/paid_toggle_button.html:8
|
||||||
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:12
|
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:12
|
||||||
msgid "Projected"
|
msgid "Projected"
|
||||||
@@ -1423,40 +1427,40 @@ msgstr ""
|
|||||||
msgid "End date should be after the start date"
|
msgid "End date should be after the start date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:220
|
#: apps/transactions/models.py:221
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated categories won't be able to be selected when creating new "
|
"Deactivated categories won't be able to be selected when creating new "
|
||||||
"transactions"
|
"transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:228
|
#: apps/transactions/models.py:229
|
||||||
msgid "Transaction Category"
|
msgid "Transaction Category"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:229
|
#: apps/transactions/models.py:230
|
||||||
msgid "Transaction Categories"
|
msgid "Transaction Categories"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:244
|
#: apps/transactions/models.py:245
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated tags won't be able to be selected when creating new transactions"
|
"Deactivated tags won't be able to be selected when creating new transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:252 apps/transactions/models.py:253
|
#: apps/transactions/models.py:253 apps/transactions/models.py:254
|
||||||
msgid "Transaction Tags"
|
msgid "Transaction Tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:268
|
#: apps/transactions/models.py:269
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated entities won't be able to be selected when creating new "
|
"Deactivated entities won't be able to be selected when creating new "
|
||||||
"transactions"
|
"transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:276
|
#: apps/transactions/models.py:277
|
||||||
msgid "Entity"
|
msgid "Entity"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:288 apps/transactions/models.py:967
|
#: apps/transactions/models.py:289 apps/transactions/models.py:971
|
||||||
#: templates/calendar_view/fragments/list.html:42
|
#: templates/calendar_view/fragments/list.html:42
|
||||||
#: templates/calendar_view/fragments/list.html:44
|
#: templates/calendar_view/fragments/list.html:44
|
||||||
#: templates/calendar_view/fragments/list.html:52
|
#: templates/calendar_view/fragments/list.html:52
|
||||||
@@ -1468,7 +1472,7 @@ msgstr ""
|
|||||||
msgid "Income"
|
msgid "Income"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:289 apps/transactions/models.py:968
|
#: apps/transactions/models.py:290 apps/transactions/models.py:972
|
||||||
#: templates/calendar_view/fragments/list.html:46
|
#: templates/calendar_view/fragments/list.html:46
|
||||||
#: templates/calendar_view/fragments/list.html:48
|
#: templates/calendar_view/fragments/list.html:48
|
||||||
#: templates/calendar_view/fragments/list.html:56
|
#: templates/calendar_view/fragments/list.html:56
|
||||||
@@ -1479,129 +1483,129 @@ msgstr ""
|
|||||||
msgid "Expense"
|
msgid "Expense"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:344 apps/transactions/models.py:578
|
#: apps/transactions/models.py:345 apps/transactions/models.py:582
|
||||||
msgid "Installment Plan"
|
msgid "Installment Plan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:353 apps/transactions/models.py:802
|
#: apps/transactions/models.py:354 apps/transactions/models.py:806
|
||||||
msgid "Recurring Transaction"
|
msgid "Recurring Transaction"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:361
|
#: apps/transactions/models.py:362
|
||||||
msgid "Deleted"
|
msgid "Deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:366
|
#: apps/transactions/models.py:367
|
||||||
msgid "Deleted At"
|
msgid "Deleted At"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:458 templates/tags/fragments/table.html:71
|
#: apps/transactions/models.py:462 templates/tags/fragments/table.html:71
|
||||||
msgid "No tags"
|
msgid "No tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:460
|
#: apps/transactions/models.py:464
|
||||||
msgid "No category"
|
msgid "No category"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:462
|
#: apps/transactions/models.py:466
|
||||||
msgid "No description"
|
msgid "No description"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:510 templates/includes/sidebar.html:67
|
#: apps/transactions/models.py:514 templates/includes/sidebar.html:59
|
||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:511 apps/users/models.py:464
|
#: apps/transactions/models.py:515 apps/users/models.py:464
|
||||||
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:61
|
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:53
|
||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:512
|
#: apps/transactions/models.py:516
|
||||||
msgid "Weekly"
|
msgid "Weekly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:513
|
#: apps/transactions/models.py:517
|
||||||
msgid "Daily"
|
msgid "Daily"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:526
|
#: apps/transactions/models.py:530
|
||||||
msgid "Number of Installments"
|
msgid "Number of Installments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:531
|
#: apps/transactions/models.py:535
|
||||||
msgid "Installment Start"
|
msgid "Installment Start"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:532
|
#: apps/transactions/models.py:536
|
||||||
msgid "The installment number to start counting from"
|
msgid "The installment number to start counting from"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:537 apps/transactions/models.py:772
|
#: apps/transactions/models.py:541 apps/transactions/models.py:776
|
||||||
msgid "Start Date"
|
msgid "Start Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:541 apps/transactions/models.py:773
|
#: apps/transactions/models.py:545 apps/transactions/models.py:777
|
||||||
msgid "End Date"
|
msgid "End Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:546
|
#: apps/transactions/models.py:550
|
||||||
msgid "Recurrence"
|
msgid "Recurrence"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:549
|
#: apps/transactions/models.py:553
|
||||||
msgid "Installment Amount"
|
msgid "Installment Amount"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:568 apps/transactions/models.py:792
|
#: apps/transactions/models.py:572 apps/transactions/models.py:796
|
||||||
msgid "Add description to transactions"
|
msgid "Add description to transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:571 apps/transactions/models.py:795
|
#: apps/transactions/models.py:575 apps/transactions/models.py:799
|
||||||
msgid "Add notes to transactions"
|
msgid "Add notes to transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:731
|
#: apps/transactions/models.py:735
|
||||||
msgid "day(s)"
|
msgid "day(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:732
|
#: apps/transactions/models.py:736
|
||||||
msgid "week(s)"
|
msgid "week(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:733
|
#: apps/transactions/models.py:737
|
||||||
msgid "month(s)"
|
msgid "month(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:734
|
#: apps/transactions/models.py:738
|
||||||
msgid "year(s)"
|
msgid "year(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:736
|
#: apps/transactions/models.py:740
|
||||||
#: templates/recurring_transactions/fragments/list.html:24
|
#: templates/recurring_transactions/fragments/list.html:24
|
||||||
msgid "Paused"
|
msgid "Paused"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:775
|
#: apps/transactions/models.py:779
|
||||||
msgid "Recurrence Type"
|
msgid "Recurrence Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:778
|
#: apps/transactions/models.py:782
|
||||||
msgid "Recurrence Interval"
|
msgid "Recurrence Interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:781
|
#: apps/transactions/models.py:785
|
||||||
msgid "Keep at most"
|
msgid "Keep at most"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:785
|
#: apps/transactions/models.py:789
|
||||||
msgid "Last Generated Date"
|
msgid "Last Generated Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:788
|
#: apps/transactions/models.py:792
|
||||||
msgid "Last Generated Reference Date"
|
msgid "Last Generated Reference Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:1034
|
#: apps/transactions/models.py:1038
|
||||||
#: apps/transactions/views/quick_transactions.py:177
|
#: apps/transactions/views/quick_transactions.py:177
|
||||||
#: apps/transactions/views/quick_transactions.py:186
|
#: apps/transactions/views/quick_transactions.py:186
|
||||||
#: apps/transactions/views/quick_transactions.py:188
|
#: apps/transactions/views/quick_transactions.py:188
|
||||||
@@ -1610,8 +1614,8 @@ msgstr ""
|
|||||||
msgid "Quick Transaction"
|
msgid "Quick Transaction"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:1035 templates/includes/navbar.html:73
|
#: apps/transactions/models.py:1039 templates/includes/navbar.html:73
|
||||||
#: templates/includes/sidebar.html:108
|
#: templates/includes/sidebar.html:100
|
||||||
#: templates/quick_transactions/pages/index.html:5
|
#: templates/quick_transactions/pages/index.html:5
|
||||||
#: templates/quick_transactions/pages/index.html:11
|
#: templates/quick_transactions/pages/index.html:11
|
||||||
msgid "Quick Transactions"
|
msgid "Quick Transactions"
|
||||||
@@ -1926,7 +1930,7 @@ msgid "All Transactions"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
||||||
#: templates/includes/sidebar.html:73
|
#: templates/includes/sidebar.html:65
|
||||||
msgid "Calendar"
|
msgid "Calendar"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2038,6 +2042,7 @@ msgstr ""
|
|||||||
#: templates/quick_transactions/fragments/list.html:34
|
#: templates/quick_transactions/fragments/list.html:34
|
||||||
#: templates/recurring_transactions/fragments/table.html:93
|
#: templates/recurring_transactions/fragments/table.html:93
|
||||||
#: templates/rules/fragments/list.html:45
|
#: templates/rules/fragments/list.html:45
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:61
|
#: templates/rules/fragments/transaction_rule/view.html:61
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:96
|
#: templates/rules/fragments/transaction_rule/view.html:96
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:137
|
#: templates/rules/fragments/transaction_rule/view.html:137
|
||||||
@@ -2163,6 +2168,8 @@ msgid "Current balance"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/accounts/fragments/account_reconciliation.html:39
|
#: templates/accounts/fragments/account_reconciliation.html:39
|
||||||
|
#: templates/net_worth/net_worth.html:105
|
||||||
|
#: templates/net_worth/net_worth.html:362
|
||||||
msgid "Difference"
|
msgid "Difference"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2257,7 +2264,7 @@ msgid "Pick a month"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
||||||
#: templates/includes/sidebar.html:53
|
#: templates/includes/sidebar.html:45
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2538,19 +2545,19 @@ msgstr ""
|
|||||||
msgid "Amount Bought"
|
msgid "Amount Bought"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:390
|
#: templates/dca/fragments/strategy/details.html:392
|
||||||
msgid "Entry Price vs Current Price"
|
msgid "Entry Price vs Current Price"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:406
|
#: templates/dca/fragments/strategy/details.html:408
|
||||||
msgid "Days Between Investments"
|
msgid "Days Between Investments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:453
|
#: templates/dca/fragments/strategy/details.html:455
|
||||||
msgid "Investment Frequency"
|
msgid "Investment Frequency"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:455
|
#: templates/dca/fragments/strategy/details.html:457
|
||||||
msgid "The straighter the blue line, the more consistent your DCA strategy is."
|
msgid "The straighter the blue line, the more consistent your DCA strategy is."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2590,7 +2597,7 @@ msgid "Edit exchange rate"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/exchange_rates/fragments/list.html:25
|
#: templates/exchange_rates/fragments/list.html:25
|
||||||
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:93
|
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:85
|
||||||
#: templates/installment_plans/fragments/list.html:21
|
#: templates/installment_plans/fragments/list.html:21
|
||||||
#: templates/yearly_overview/pages/overview_by_account.html:105
|
#: templates/yearly_overview/pages/overview_by_account.html:105
|
||||||
#: templates/yearly_overview/pages/overview_by_currency.html:107
|
#: templates/yearly_overview/pages/overview_by_currency.html:107
|
||||||
@@ -2647,7 +2654,7 @@ msgid "No services configured"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
|
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
|
||||||
#: templates/includes/sidebar.html:247
|
#: templates/includes/sidebar.html:239
|
||||||
msgid "Export and Restore"
|
msgid "Export and Restore"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2744,72 +2751,72 @@ msgstr ""
|
|||||||
msgid "Overview"
|
msgid "Overview"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
|
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:77
|
||||||
msgid "Net Worth"
|
msgid "Net Worth"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:45
|
#: templates/includes/navbar.html:45
|
||||||
#: templates/insights/fragments/category_overview/index.html:65
|
#: templates/insights/fragments/category_overview/index.html:65
|
||||||
#: templates/net_worth/net_worth.html:22
|
#: templates/net_worth/net_worth.html:23
|
||||||
msgid "Current"
|
msgid "Current"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:79
|
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:71
|
||||||
#: templates/insights/pages/index.html:5
|
#: templates/insights/pages/index.html:5
|
||||||
msgid "Insights"
|
msgid "Insights"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
|
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:93
|
||||||
msgid "Trash Can"
|
msgid "Trash Can"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
|
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:118
|
||||||
msgid "Tools"
|
msgid "Tools"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:128
|
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:120
|
||||||
msgid "Dollar Cost Average Tracker"
|
msgid "Dollar Cost Average Tracker"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:134
|
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:126
|
||||||
#: templates/mini_tools/unit_price_calculator.html:5
|
#: templates/mini_tools/unit_price_calculator.html:5
|
||||||
#: templates/mini_tools/unit_price_calculator.html:10
|
#: templates/mini_tools/unit_price_calculator.html:10
|
||||||
msgid "Unit Price Calculator"
|
msgid "Unit Price Calculator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:140
|
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:132
|
||||||
#: templates/mini_tools/currency_converter/currency_converter.html:8
|
#: templates/mini_tools/currency_converter/currency_converter.html:8
|
||||||
#: templates/mini_tools/currency_converter/currency_converter.html:15
|
#: templates/mini_tools/currency_converter/currency_converter.html:15
|
||||||
msgid "Currency Converter"
|
msgid "Currency Converter"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
|
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:150
|
||||||
#: templates/includes/sidebar.html:171
|
#: templates/includes/sidebar.html:163
|
||||||
msgid "Management"
|
msgid "Management"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
|
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:224
|
||||||
msgid "Automation"
|
msgid "Automation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
|
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:253
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:270
|
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:262
|
||||||
msgid "Only use this if you know what you're doing"
|
msgid "Only use this if you know what you're doing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
|
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:261
|
||||||
msgid "Django Admin"
|
msgid "Django Admin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
|
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:276
|
||||||
msgid "is available"
|
msgid "is available"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
||||||
#: templates/includes/sidebar.html:290
|
#: templates/includes/sidebar.html:282
|
||||||
msgid "Calculator"
|
msgid "Calculator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3133,25 +3140,29 @@ msgstr ""
|
|||||||
msgid "Order by"
|
msgid "Order by"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:40
|
#: templates/net_worth/net_worth.html:42
|
||||||
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
||||||
msgid "By currency"
|
msgid "By currency"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:75
|
#: templates/net_worth/net_worth.html:78
|
||||||
msgid "Consolidated"
|
msgid "Consolidated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:104
|
#: templates/net_worth/net_worth.html:101
|
||||||
|
msgid "Evolution"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/net_worth/net_worth.html:128
|
||||||
#: templates/yearly_overview/pages/overview_by_account.html:7
|
#: templates/yearly_overview/pages/overview_by_account.html:7
|
||||||
msgid "By account"
|
msgid "By account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:211
|
#: templates/net_worth/net_worth.html:236
|
||||||
msgid "Evolution by currency"
|
msgid "Evolution by currency"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:275
|
#: templates/net_worth/net_worth.html:300
|
||||||
msgid "Evolution by account"
|
msgid "Evolution by account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3248,10 +3259,8 @@ msgid "Add transaction rule"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
#: templates/rules/fragments/transaction_rule/view.html:127
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
msgid "Create"
|
||||||
#: templates/rules/fragments/transaction_rule/edit.html:5
|
|
||||||
msgid "Edit transaction rule"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:8
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:8
|
||||||
@@ -3293,6 +3302,10 @@ msgstr ""
|
|||||||
msgid "No transaction found, a new one will be created"
|
msgid "No transaction found, a new one will be created"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/rules/fragments/transaction_rule/edit.html:5
|
||||||
|
msgid "Edit transaction rule"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/transaction_rule_action/add.html:5
|
#: templates/rules/fragments/transaction_rule/transaction_rule_action/add.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/update_or_create_transaction_rule_action/add.html:5
|
#: templates/rules/fragments/transaction_rule/update_or_create_transaction_rule_action/add.html:5
|
||||||
msgid "Add action to transaction rule"
|
msgid "Add action to transaction rule"
|
||||||
@@ -3323,10 +3336,6 @@ msgstr ""
|
|||||||
msgid "This rule has no actions"
|
msgid "This rule has no actions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:127
|
|
||||||
msgid "Create"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:144
|
#: templates/rules/fragments/transaction_rule/view.html:144
|
||||||
msgid "Add new"
|
msgid "Add new"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
+773
-1270
File diff suppressed because it is too large
Load Diff
+166
-165
@@ -7,9 +7,9 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-07 13:08+0000\n"
|
"POT-Creation-Date: 2025-09-20 14:08+0000\n"
|
||||||
"PO-Revision-Date: 2025-09-01 06:17+0000\n"
|
"PO-Revision-Date: 2025-10-07 20:17+0000\n"
|
||||||
"Last-Translator: sorcierwax <freakywax@gmail.com>\n"
|
"Last-Translator: Erwan Colin <zephone@protonmail.com>\n"
|
||||||
"Language-Team: French <https://translations.herculino.com/projects/wygiwyh/"
|
"Language-Team: French <https://translations.herculino.com/projects/wygiwyh/"
|
||||||
"app/fr/>\n"
|
"app/fr/>\n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
@@ -17,13 +17,13 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||||
"X-Generator: Weblate 5.13\n"
|
"X-Generator: Weblate 5.13.3\n"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:26
|
#: apps/accounts/forms.py:26
|
||||||
msgid "Group name"
|
msgid "Group name"
|
||||||
msgstr "Nom de groupe"
|
msgstr "Nom de groupe"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:42 apps/accounts/forms.py:118
|
#: apps/accounts/forms.py:42 apps/accounts/forms.py:112
|
||||||
#: apps/currencies/forms.py:55 apps/currencies/forms.py:93
|
#: 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/currencies/forms.py:146 apps/dca/forms.py:49 apps/dca/forms.py:224
|
||||||
#: apps/import_app/forms.py:34 apps/rules/forms.py:57 apps/rules/forms.py:101
|
#: apps/import_app/forms.py:34 apps/rules/forms.py:57 apps/rules/forms.py:101
|
||||||
@@ -33,11 +33,12 @@ msgstr "Nom de groupe"
|
|||||||
#: apps/transactions/forms.py:953 apps/transactions/forms.py:988
|
#: apps/transactions/forms.py:953 apps/transactions/forms.py:988
|
||||||
#: apps/transactions/forms.py:1142 apps/users/forms.py:217
|
#: apps/transactions/forms.py:1142 apps/users/forms.py:217
|
||||||
#: apps/users/forms.py:379
|
#: apps/users/forms.py:379
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:132
|
#: templates/rules/fragments/transaction_rule/view.html:132
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Mise à jour"
|
msgstr "Mise à jour"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:50 apps/accounts/forms.py:126
|
#: apps/accounts/forms.py:50 apps/accounts/forms.py:120
|
||||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
||||||
#: apps/currencies/forms.py:101 apps/currencies/forms.py:154
|
#: apps/currencies/forms.py:101 apps/currencies/forms.py:154
|
||||||
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
|
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
|
||||||
@@ -71,35 +72,35 @@ msgstr "Ajouter"
|
|||||||
msgid "Group"
|
msgid "Group"
|
||||||
msgstr "Groupe"
|
msgstr "Groupe"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:135
|
#: apps/accounts/forms.py:129
|
||||||
msgid "New balance"
|
msgid "New balance"
|
||||||
msgstr "Nouveau solde"
|
msgstr "Nouveau solde"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:141 apps/dca/forms.py:85 apps/dca/forms.py:92
|
#: apps/accounts/forms.py:135 apps/dca/forms.py:85 apps/dca/forms.py:92
|
||||||
#: apps/insights/forms.py:118 apps/rules/forms.py:185 apps/rules/forms.py:201
|
#: apps/insights/forms.py:118 apps/rules/forms.py:185 apps/rules/forms.py:201
|
||||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:263
|
#: apps/transactions/forms.py:44 apps/transactions/forms.py:263
|
||||||
#: apps/transactions/forms.py:438 apps/transactions/forms.py:540
|
#: apps/transactions/forms.py:438 apps/transactions/forms.py:540
|
||||||
#: apps/transactions/forms.py:547 apps/transactions/forms.py:759
|
#: apps/transactions/forms.py:547 apps/transactions/forms.py:759
|
||||||
#: apps/transactions/forms.py:1020 apps/transactions/models.py:322
|
#: apps/transactions/forms.py:1020 apps/transactions/models.py:323
|
||||||
#: apps/transactions/models.py:556 apps/transactions/models.py:756
|
#: apps/transactions/models.py:560 apps/transactions/models.py:760
|
||||||
#: apps/transactions/models.py:1006
|
#: apps/transactions/models.py:1010
|
||||||
#: templates/insights/fragments/category_overview/index.html:78
|
#: templates/insights/fragments/category_overview/index.html:78
|
||||||
#: templates/insights/fragments/category_overview/index.html:530
|
#: templates/insights/fragments/category_overview/index.html:530
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr "Catégorie"
|
msgstr "Catégorie"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:148 apps/dca/forms.py:101 apps/dca/forms.py:109
|
#: apps/accounts/forms.py:142 apps/dca/forms.py:101 apps/dca/forms.py:109
|
||||||
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135
|
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135
|
||||||
#: apps/rules/forms.py:188 apps/rules/forms.py:198 apps/rules/models.py:45
|
#: apps/rules/forms.py:188 apps/rules/forms.py:198 apps/rules/models.py:45
|
||||||
#: apps/rules/models.py:315 apps/transactions/filters.py:69
|
#: apps/rules/models.py:315 apps/transactions/filters.py:69
|
||||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:271
|
#: apps/transactions/forms.py:52 apps/transactions/forms.py:271
|
||||||
#: apps/transactions/forms.py:446 apps/transactions/forms.py:556
|
#: apps/transactions/forms.py:446 apps/transactions/forms.py:556
|
||||||
#: apps/transactions/forms.py:564 apps/transactions/forms.py:752
|
#: apps/transactions/forms.py:564 apps/transactions/forms.py:752
|
||||||
#: apps/transactions/forms.py:1013 apps/transactions/models.py:328
|
#: apps/transactions/forms.py:1013 apps/transactions/models.py:329
|
||||||
#: apps/transactions/models.py:558 apps/transactions/models.py:760
|
#: apps/transactions/models.py:562 apps/transactions/models.py:764
|
||||||
#: apps/transactions/models.py:1012 templates/includes/navbar.html:111
|
#: apps/transactions/models.py:1016 templates/includes/navbar.html:111
|
||||||
#: templates/includes/sidebar.html:192
|
#: templates/includes/sidebar.html:184
|
||||||
#: templates/insights/fragments/category_overview/index.html:36
|
#: templates/insights/fragments/category_overview/index.html:36
|
||||||
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
@@ -107,8 +108,8 @@ msgstr "Etiquettes"
|
|||||||
|
|
||||||
#: apps/accounts/models.py:12 apps/accounts/models.py:29 apps/dca/models.py:13
|
#: apps/accounts/models.py:12 apps/accounts/models.py:29 apps/dca/models.py:13
|
||||||
#: apps/import_app/models.py:14 apps/rules/models.py:13
|
#: apps/import_app/models.py:14 apps/rules/models.py:13
|
||||||
#: apps/transactions/models.py:214 apps/transactions/models.py:239
|
#: apps/transactions/models.py:215 apps/transactions/models.py:240
|
||||||
#: apps/transactions/models.py:263 apps/transactions/models.py:974
|
#: apps/transactions/models.py:264 apps/transactions/models.py:978
|
||||||
#: templates/account_groups/fragments/list.html:25
|
#: templates/account_groups/fragments/list.html:25
|
||||||
#: templates/accounts/fragments/list.html:25
|
#: templates/accounts/fragments/list.html:25
|
||||||
#: templates/categories/fragments/table.html:16
|
#: templates/categories/fragments/table.html:16
|
||||||
@@ -131,7 +132,7 @@ msgstr "Groupe de comptes"
|
|||||||
|
|
||||||
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
||||||
#: templates/account_groups/pages/index.html:4
|
#: templates/account_groups/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:212
|
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:204
|
||||||
msgid "Account Groups"
|
msgid "Account Groups"
|
||||||
msgstr "Groupes de comptes"
|
msgstr "Groupes de comptes"
|
||||||
|
|
||||||
@@ -180,9 +181,9 @@ msgstr ""
|
|||||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:283
|
#: apps/transactions/forms.py:64 apps/transactions/forms.py:283
|
||||||
#: apps/transactions/forms.py:405 apps/transactions/forms.py:744
|
#: apps/transactions/forms.py:405 apps/transactions/forms.py:744
|
||||||
#: apps/transactions/forms.py:1005 apps/transactions/models.py:294
|
#: apps/transactions/forms.py:1005 apps/transactions/models.py:295
|
||||||
#: apps/transactions/models.py:516 apps/transactions/models.py:738
|
#: apps/transactions/models.py:520 apps/transactions/models.py:742
|
||||||
#: apps/transactions/models.py:980
|
#: apps/transactions/models.py:984
|
||||||
#: templates/installment_plans/fragments/table.html:17
|
#: templates/installment_plans/fragments/table.html:17
|
||||||
#: templates/quick_transactions/fragments/list.html:14
|
#: templates/quick_transactions/fragments/list.html:14
|
||||||
#: templates/recurring_transactions/fragments/table.html:19
|
#: templates/recurring_transactions/fragments/table.html:19
|
||||||
@@ -195,8 +196,8 @@ msgstr "Compte"
|
|||||||
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
||||||
#: templates/accounts/fragments/list.html:5
|
#: templates/accounts/fragments/list.html:5
|
||||||
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
||||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
|
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:196
|
||||||
#: templates/includes/sidebar.html:206
|
#: templates/includes/sidebar.html:198
|
||||||
#: templates/monthly_overview/pages/overview.html:94
|
#: templates/monthly_overview/pages/overview.html:94
|
||||||
#: templates/transactions/fragments/summary.html:12
|
#: templates/transactions/fragments/summary.html:12
|
||||||
#: templates/transactions/pages/transactions.html:137
|
#: templates/transactions/pages/transactions.html:137
|
||||||
@@ -506,7 +507,7 @@ msgstr "Suffixe"
|
|||||||
#: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:180
|
#: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:180
|
||||||
#: apps/rules/forms.py:194 apps/rules/models.py:38 apps/rules/models.py:279
|
#: apps/rules/forms.py:194 apps/rules/models.py:38 apps/rules/models.py:279
|
||||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:410
|
#: apps/transactions/forms.py:68 apps/transactions/forms.py:410
|
||||||
#: apps/transactions/forms.py:568 apps/transactions/models.py:304
|
#: apps/transactions/forms.py:568 apps/transactions/models.py:305
|
||||||
#: templates/dca/fragments/strategy/details.html:52
|
#: templates/dca/fragments/strategy/details.html:52
|
||||||
#: templates/exchange_rates/fragments/table.html:10
|
#: templates/exchange_rates/fragments/table.html:10
|
||||||
#: templates/exchange_rates_services/fragments/table.html:10
|
#: templates/exchange_rates_services/fragments/table.html:10
|
||||||
@@ -529,8 +530,8 @@ msgstr "Décimales"
|
|||||||
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60
|
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60
|
||||||
#: templates/currencies/fragments/list.html:5
|
#: templates/currencies/fragments/list.html:5
|
||||||
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
||||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
|
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:210
|
||||||
#: templates/includes/sidebar.html:220
|
#: templates/includes/sidebar.html:212
|
||||||
#: templates/monthly_overview/pages/overview.html:81
|
#: templates/monthly_overview/pages/overview.html:81
|
||||||
#: templates/transactions/fragments/summary.html:8
|
#: templates/transactions/fragments/summary.html:8
|
||||||
#: templates/transactions/pages/transactions.html:124
|
#: templates/transactions/pages/transactions.html:124
|
||||||
@@ -565,7 +566,7 @@ msgstr "Auto"
|
|||||||
#: apps/currencies/models.py:82 apps/export_app/forms.py:68
|
#: apps/currencies/models.py:82 apps/export_app/forms.py:68
|
||||||
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
|
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
|
||||||
#: templates/exchange_rates/pages/index.html:4
|
#: templates/exchange_rates/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:226
|
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:218
|
||||||
msgid "Exchange Rates"
|
msgid "Exchange Rates"
|
||||||
msgstr "Taux de changes"
|
msgstr "Taux de changes"
|
||||||
|
|
||||||
@@ -593,8 +594,8 @@ msgstr "Nom du Service"
|
|||||||
msgid "Service Type"
|
msgid "Service Type"
|
||||||
msgstr "Type de Service"
|
msgstr "Type de Service"
|
||||||
|
|
||||||
#: apps/currencies/models.py:118 apps/transactions/models.py:218
|
#: apps/currencies/models.py:118 apps/transactions/models.py:219
|
||||||
#: apps/transactions/models.py:242 apps/transactions/models.py:266
|
#: apps/transactions/models.py:243 apps/transactions/models.py:267
|
||||||
#: templates/categories/fragments/list.html:21
|
#: templates/categories/fragments/list.html:21
|
||||||
#: templates/entities/fragments/list.html:21
|
#: templates/entities/fragments/list.html:21
|
||||||
#: templates/recurring_transactions/fragments/list.html:21
|
#: templates/recurring_transactions/fragments/list.html:21
|
||||||
@@ -782,8 +783,8 @@ msgstr "Devise de paiement"
|
|||||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:184
|
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:184
|
||||||
#: apps/rules/forms.py:200 apps/rules/models.py:43 apps/rules/models.py:295
|
#: apps/rules/forms.py:200 apps/rules/models.py:43 apps/rules/models.py:295
|
||||||
#: apps/transactions/forms.py:432 apps/transactions/forms.py:584
|
#: apps/transactions/forms.py:432 apps/transactions/forms.py:584
|
||||||
#: apps/transactions/models.py:318 apps/transactions/models.py:565
|
#: apps/transactions/models.py:319 apps/transactions/models.py:569
|
||||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1002
|
#: apps/transactions/models.py:770 apps/transactions/models.py:1006
|
||||||
msgid "Notes"
|
msgid "Notes"
|
||||||
msgstr "Notes"
|
msgstr "Notes"
|
||||||
|
|
||||||
@@ -840,15 +841,15 @@ msgid "Entry deleted successfully"
|
|||||||
msgstr "Entrée supprimée avec succès"
|
msgstr "Entrée supprimée avec succès"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131
|
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131
|
||||||
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:263
|
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:255
|
||||||
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
|
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "Utilisateurs"
|
msgstr "Utilisateurs"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
||||||
#: apps/transactions/models.py:379 templates/includes/navbar.html:58
|
#: apps/transactions/models.py:380 templates/includes/navbar.html:58
|
||||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
|
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:83
|
||||||
#: templates/includes/sidebar.html:184
|
#: templates/includes/sidebar.html:176
|
||||||
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
||||||
#: templates/recurring_transactions/fragments/table.html:39
|
#: templates/recurring_transactions/fragments/table.html:39
|
||||||
#: templates/transactions/pages/transactions.html:5
|
#: templates/transactions/pages/transactions.html:5
|
||||||
@@ -858,7 +859,7 @@ msgstr "Transactions"
|
|||||||
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134
|
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134
|
||||||
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
||||||
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
||||||
#: templates/includes/sidebar.html:186
|
#: templates/includes/sidebar.html:178
|
||||||
msgid "Categories"
|
msgid "Categories"
|
||||||
msgstr "Catégories"
|
msgstr "Catégories"
|
||||||
|
|
||||||
@@ -867,27 +868,27 @@ msgstr "Catégories"
|
|||||||
#: apps/rules/models.py:307 apps/transactions/filters.py:74
|
#: apps/rules/models.py:307 apps/transactions/filters.py:74
|
||||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:279
|
#: apps/transactions/forms.py:60 apps/transactions/forms.py:279
|
||||||
#: apps/transactions/forms.py:454 apps/transactions/forms.py:767
|
#: apps/transactions/forms.py:454 apps/transactions/forms.py:767
|
||||||
#: apps/transactions/forms.py:1028 apps/transactions/models.py:277
|
#: apps/transactions/forms.py:1028 apps/transactions/models.py:278
|
||||||
#: apps/transactions/models.py:333 apps/transactions/models.py:561
|
#: apps/transactions/models.py:334 apps/transactions/models.py:565
|
||||||
#: apps/transactions/models.py:763 apps/transactions/models.py:1017
|
#: apps/transactions/models.py:767 apps/transactions/models.py:1021
|
||||||
#: templates/entities/fragments/list.html:5
|
#: templates/entities/fragments/list.html:5
|
||||||
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
|
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
|
||||||
#: templates/includes/sidebar.html:198
|
#: templates/includes/sidebar.html:190
|
||||||
#: templates/insights/fragments/category_overview/index.html:49
|
#: templates/insights/fragments/category_overview/index.html:49
|
||||||
msgid "Entities"
|
msgid "Entities"
|
||||||
msgstr "Entités"
|
msgstr "Entités"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
||||||
#: apps/transactions/models.py:803 templates/includes/navbar.html:77
|
#: apps/transactions/models.py:807 templates/includes/navbar.html:77
|
||||||
#: templates/includes/sidebar.html:120
|
#: templates/includes/sidebar.html:112
|
||||||
#: templates/recurring_transactions/fragments/list.html:5
|
#: templates/recurring_transactions/fragments/list.html:5
|
||||||
#: templates/recurring_transactions/pages/index.html:4
|
#: templates/recurring_transactions/pages/index.html:4
|
||||||
msgid "Recurring Transactions"
|
msgid "Recurring Transactions"
|
||||||
msgstr "Transactions récurrentes"
|
msgstr "Transactions récurrentes"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
||||||
#: apps/transactions/models.py:579 templates/includes/navbar.html:75
|
#: apps/transactions/models.py:583 templates/includes/navbar.html:75
|
||||||
#: templates/includes/sidebar.html:114
|
#: templates/includes/sidebar.html:106
|
||||||
#: templates/installment_plans/fragments/list.html:5
|
#: templates/installment_plans/fragments/list.html:5
|
||||||
#: templates/installment_plans/pages/index.html:4
|
#: templates/installment_plans/pages/index.html:4
|
||||||
msgid "Installment Plans"
|
msgid "Installment Plans"
|
||||||
@@ -896,12 +897,12 @@ msgstr "Paiements en plusieurs fois"
|
|||||||
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
||||||
#: templates/exchange_rates_services/fragments/list.html:6
|
#: templates/exchange_rates_services/fragments/list.html:6
|
||||||
#: templates/exchange_rates_services/pages/index.html:4
|
#: templates/exchange_rates_services/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:254
|
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:246
|
||||||
msgid "Automatic Exchange Rates"
|
msgid "Automatic Exchange Rates"
|
||||||
msgstr "Taux de change automatique"
|
msgstr "Taux de change automatique"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135
|
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135
|
||||||
#: templates/includes/sidebar.html:234 templates/rules/fragments/list.html:5
|
#: templates/includes/sidebar.html:226 templates/rules/fragments/list.html:5
|
||||||
#: templates/rules/pages/index.html:4
|
#: templates/rules/pages/index.html:4
|
||||||
msgid "Rules"
|
msgid "Rules"
|
||||||
msgstr "Règles"
|
msgstr "Règles"
|
||||||
@@ -973,7 +974,7 @@ msgstr "Sélectionnez un fichier"
|
|||||||
|
|
||||||
#: apps/import_app/forms.py:61
|
#: apps/import_app/forms.py:61
|
||||||
#: templates/import_app/fragments/profiles/list.html:62
|
#: templates/import_app/fragments/profiles/list.html:62
|
||||||
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:240
|
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:232
|
||||||
msgid "Import"
|
msgid "Import"
|
||||||
msgstr "Importer"
|
msgstr "Importer"
|
||||||
|
|
||||||
@@ -1065,7 +1066,7 @@ msgstr "Revenus à date"
|
|||||||
#: templates/insights/fragments/category_explorer/charts/account.html:66
|
#: templates/insights/fragments/category_explorer/charts/account.html:66
|
||||||
#: templates/insights/fragments/category_explorer/charts/currency.html:66
|
#: templates/insights/fragments/category_explorer/charts/currency.html:66
|
||||||
msgid "Current Expenses"
|
msgid "Current Expenses"
|
||||||
msgstr "Dépenses à date"
|
msgstr "Dépenses actuelles"
|
||||||
|
|
||||||
#: apps/insights/utils/category_explorer.py:74
|
#: apps/insights/utils/category_explorer.py:74
|
||||||
#: apps/insights/utils/category_explorer.py:153
|
#: apps/insights/utils/category_explorer.py:153
|
||||||
@@ -1134,15 +1135,15 @@ msgstr "Opérateur"
|
|||||||
|
|
||||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:36
|
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:36
|
||||||
#: apps/rules/models.py:271 apps/transactions/forms.py:396
|
#: apps/rules/models.py:271 apps/transactions/forms.py:396
|
||||||
#: apps/transactions/models.py:301 apps/transactions/models.py:521
|
#: apps/transactions/models.py:302 apps/transactions/models.py:525
|
||||||
#: apps/transactions/models.py:744 apps/transactions/models.py:987
|
#: apps/transactions/models.py:748 apps/transactions/models.py:991
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr "Type"
|
msgstr "Type"
|
||||||
|
|
||||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:37
|
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:37
|
||||||
#: apps/rules/models.py:275 apps/transactions/filters.py:23
|
#: apps/rules/models.py:275 apps/transactions/filters.py:23
|
||||||
#: apps/transactions/forms.py:400 apps/transactions/models.py:303
|
#: apps/transactions/forms.py:400 apps/transactions/models.py:304
|
||||||
#: apps/transactions/models.py:989 templates/cotton/transaction/item.html:21
|
#: apps/transactions/models.py:993 templates/cotton/transaction/item.html:21
|
||||||
#: templates/cotton/transaction/item.html:32
|
#: templates/cotton/transaction/item.html:32
|
||||||
#: templates/transactions/widgets/paid_toggle_button.html:12
|
#: templates/transactions/widgets/paid_toggle_button.html:12
|
||||||
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:16
|
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:16
|
||||||
@@ -1152,15 +1153,15 @@ msgstr "Payé"
|
|||||||
#: apps/rules/forms.py:181 apps/rules/forms.py:195 apps/rules/models.py:39
|
#: apps/rules/forms.py:181 apps/rules/forms.py:195 apps/rules/models.py:39
|
||||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||||
#: apps/transactions/forms.py:416 apps/transactions/forms.py:571
|
#: apps/transactions/forms.py:416 apps/transactions/forms.py:571
|
||||||
#: apps/transactions/forms.py:773 apps/transactions/models.py:305
|
#: apps/transactions/forms.py:773 apps/transactions/models.py:306
|
||||||
#: apps/transactions/models.py:539 apps/transactions/models.py:768
|
#: apps/transactions/models.py:543 apps/transactions/models.py:772
|
||||||
msgid "Reference Date"
|
msgid "Reference Date"
|
||||||
msgstr "Date de référence"
|
msgstr "Date de référence"
|
||||||
|
|
||||||
#: apps/rules/forms.py:182 apps/rules/forms.py:196 apps/rules/models.py:41
|
#: apps/rules/forms.py:182 apps/rules/forms.py:196 apps/rules/models.py:41
|
||||||
#: apps/rules/models.py:287 apps/transactions/forms.py:423
|
#: apps/rules/models.py:287 apps/transactions/forms.py:423
|
||||||
#: apps/transactions/models.py:311 apps/transactions/models.py:749
|
#: apps/transactions/models.py:312 apps/transactions/models.py:753
|
||||||
#: apps/transactions/models.py:995 templates/insights/fragments/sankey.html:95
|
#: apps/transactions/models.py:999 templates/insights/fragments/sankey.html:95
|
||||||
#: templates/installment_plans/fragments/table.html:18
|
#: templates/installment_plans/fragments/table.html:18
|
||||||
#: templates/quick_transactions/fragments/list.html:15
|
#: templates/quick_transactions/fragments/list.html:15
|
||||||
#: templates/recurring_transactions/fragments/table.html:20
|
#: templates/recurring_transactions/fragments/table.html:20
|
||||||
@@ -1170,27 +1171,27 @@ msgstr "Montant"
|
|||||||
#: apps/rules/forms.py:183 apps/rules/forms.py:197 apps/rules/models.py:14
|
#: apps/rules/forms.py:183 apps/rules/forms.py:197 apps/rules/models.py:14
|
||||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:575
|
#: apps/transactions/forms.py:427 apps/transactions/forms.py:575
|
||||||
#: apps/transactions/models.py:316 apps/transactions/models.py:523
|
#: apps/transactions/models.py:317 apps/transactions/models.py:527
|
||||||
#: apps/transactions/models.py:752 apps/transactions/models.py:1000
|
#: apps/transactions/models.py:756 apps/transactions/models.py:1004
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Description"
|
msgstr "Description"
|
||||||
|
|
||||||
#: apps/rules/forms.py:186 apps/rules/forms.py:202 apps/rules/models.py:47
|
#: apps/rules/forms.py:186 apps/rules/forms.py:202 apps/rules/models.py:47
|
||||||
#: apps/rules/models.py:299 apps/transactions/models.py:355
|
#: apps/rules/models.py:299 apps/transactions/models.py:356
|
||||||
#: apps/transactions/models.py:1022
|
#: apps/transactions/models.py:1026
|
||||||
msgid "Internal Note"
|
msgid "Internal Note"
|
||||||
msgstr "Note interne"
|
msgstr "Note interne"
|
||||||
|
|
||||||
#: apps/rules/forms.py:187 apps/rules/forms.py:203 apps/rules/models.py:48
|
#: apps/rules/forms.py:187 apps/rules/forms.py:203 apps/rules/models.py:48
|
||||||
#: apps/rules/models.py:303 apps/transactions/models.py:357
|
#: apps/rules/models.py:303 apps/transactions/models.py:358
|
||||||
#: apps/transactions/models.py:1024
|
#: apps/transactions/models.py:1028
|
||||||
msgid "Internal ID"
|
msgid "Internal ID"
|
||||||
msgstr "ID interne"
|
msgstr "ID interne"
|
||||||
|
|
||||||
#: apps/rules/forms.py:190 apps/rules/forms.py:204 apps/rules/models.py:40
|
#: apps/rules/forms.py:190 apps/rules/forms.py:204 apps/rules/models.py:40
|
||||||
#: apps/rules/models.py:319 apps/transactions/forms.py:588
|
#: apps/rules/models.py:319 apps/transactions/forms.py:588
|
||||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
#: apps/transactions/models.py:216 apps/transactions/models.py:307
|
||||||
#: apps/transactions/models.py:990
|
#: apps/transactions/models.py:994
|
||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "Silencieux"
|
msgstr "Silencieux"
|
||||||
|
|
||||||
@@ -1203,30 +1204,29 @@ msgid "Set Values"
|
|||||||
msgstr "Configurer les valeurs"
|
msgstr "Configurer les valeurs"
|
||||||
|
|
||||||
#: apps/rules/forms.py:415 apps/rules/forms.py:452 apps/rules/forms.py:489
|
#: apps/rules/forms.py:415 apps/rules/forms.py:452 apps/rules/forms.py:489
|
||||||
#: apps/transactions/models.py:378
|
#: apps/transactions/models.py:379
|
||||||
msgid "Transaction"
|
msgid "Transaction"
|
||||||
msgstr "Transaction"
|
msgstr "Transaction"
|
||||||
|
|
||||||
#: apps/rules/forms.py:419 apps/rules/forms.py:456 apps/rules/forms.py:493
|
#: apps/rules/forms.py:419 apps/rules/forms.py:456 apps/rules/forms.py:493
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Type to search for a transaction to link to this entry"
|
|
||||||
msgid "Type to search for a transaction"
|
msgid "Type to search for a transaction"
|
||||||
msgstr "Ecrivez pour rechercher une transaction à lier avec cette entrée"
|
msgstr "Saisissez pour rechercher une transaction"
|
||||||
|
|
||||||
#: apps/rules/forms.py:431 apps/rules/forms.py:468 apps/rules/forms.py:504
|
#: apps/rules/forms.py:431 apps/rules/forms.py:468 apps/rules/forms.py:504
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:121
|
#: templates/rules/fragments/transaction_rule/view.html:121
|
||||||
msgid "Test"
|
msgid "Test"
|
||||||
msgstr ""
|
msgstr "Test"
|
||||||
|
|
||||||
#: apps/rules/models.py:15
|
#: apps/rules/models.py:15
|
||||||
msgid "Trigger"
|
msgid "Trigger"
|
||||||
msgstr "Déclencheur"
|
msgstr "Déclencheur"
|
||||||
|
|
||||||
#: apps/rules/models.py:17
|
#: apps/rules/models.py:17
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Recurrence"
|
|
||||||
msgid "Sequenced"
|
msgid "Sequenced"
|
||||||
msgstr "Récurrence"
|
msgstr "Classé"
|
||||||
|
|
||||||
#: apps/rules/models.py:26
|
#: apps/rules/models.py:26
|
||||||
msgid "Transaction rule"
|
msgid "Transaction rule"
|
||||||
@@ -1345,7 +1345,7 @@ msgstr ""
|
|||||||
#: apps/transactions/filters.py:24 templates/cotton/transaction/item.html:21
|
#: apps/transactions/filters.py:24 templates/cotton/transaction/item.html:21
|
||||||
#: templates/cotton/transaction/item.html:32 templates/includes/navbar.html:47
|
#: templates/cotton/transaction/item.html:32 templates/includes/navbar.html:47
|
||||||
#: templates/insights/fragments/category_overview/index.html:61
|
#: templates/insights/fragments/category_overview/index.html:61
|
||||||
#: templates/net_worth/net_worth.html:32
|
#: templates/net_worth/net_worth.html:33
|
||||||
#: templates/transactions/widgets/paid_toggle_button.html:8
|
#: templates/transactions/widgets/paid_toggle_button.html:8
|
||||||
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:12
|
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:12
|
||||||
msgid "Projected"
|
msgid "Projected"
|
||||||
@@ -1457,7 +1457,7 @@ msgstr "Transactions à venir"
|
|||||||
msgid "End date should be after the start date"
|
msgid "End date should be after the start date"
|
||||||
msgstr "La date de fin doit être ultérieure à la date de début"
|
msgstr "La date de fin doit être ultérieure à la date de début"
|
||||||
|
|
||||||
#: apps/transactions/models.py:220
|
#: apps/transactions/models.py:221
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated categories won't be able to be selected when creating new "
|
"Deactivated categories won't be able to be selected when creating new "
|
||||||
"transactions"
|
"transactions"
|
||||||
@@ -1465,26 +1465,26 @@ msgstr ""
|
|||||||
"Les catégories désactivées ne seront pas sélectionnable lors de la création "
|
"Les catégories désactivées ne seront pas sélectionnable lors de la création "
|
||||||
"de nouvelle transactions"
|
"de nouvelle transactions"
|
||||||
|
|
||||||
#: apps/transactions/models.py:228
|
#: apps/transactions/models.py:229
|
||||||
msgid "Transaction Category"
|
msgid "Transaction Category"
|
||||||
msgstr "Catégorie de transaction"
|
msgstr "Catégorie de transaction"
|
||||||
|
|
||||||
#: apps/transactions/models.py:229
|
#: apps/transactions/models.py:230
|
||||||
msgid "Transaction Categories"
|
msgid "Transaction Categories"
|
||||||
msgstr "Catégories de transaction"
|
msgstr "Catégories de transaction"
|
||||||
|
|
||||||
#: apps/transactions/models.py:244
|
#: apps/transactions/models.py:245
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated tags won't be able to be selected when creating new transactions"
|
"Deactivated tags won't be able to be selected when creating new transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Les étiquettes désactivées ne pourront pas être sélectionnées lors de la "
|
"Les étiquettes désactivées ne pourront pas être sélectionnées lors de la "
|
||||||
"création de nouvelles transactions"
|
"création de nouvelles transactions"
|
||||||
|
|
||||||
#: apps/transactions/models.py:252 apps/transactions/models.py:253
|
#: apps/transactions/models.py:253 apps/transactions/models.py:254
|
||||||
msgid "Transaction Tags"
|
msgid "Transaction Tags"
|
||||||
msgstr "Etiquettes de transaction"
|
msgstr "Etiquettes de transaction"
|
||||||
|
|
||||||
#: apps/transactions/models.py:268
|
#: apps/transactions/models.py:269
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated entities won't be able to be selected when creating new "
|
"Deactivated entities won't be able to be selected when creating new "
|
||||||
"transactions"
|
"transactions"
|
||||||
@@ -1492,11 +1492,11 @@ msgstr ""
|
|||||||
"Les entités désactivées ne pourront pas être sélectionnées lors de la "
|
"Les entités désactivées ne pourront pas être sélectionnées lors de la "
|
||||||
"créations de nouvelles transactions"
|
"créations de nouvelles transactions"
|
||||||
|
|
||||||
#: apps/transactions/models.py:276
|
#: apps/transactions/models.py:277
|
||||||
msgid "Entity"
|
msgid "Entity"
|
||||||
msgstr "Entité"
|
msgstr "Entité"
|
||||||
|
|
||||||
#: apps/transactions/models.py:288 apps/transactions/models.py:967
|
#: apps/transactions/models.py:289 apps/transactions/models.py:971
|
||||||
#: templates/calendar_view/fragments/list.html:42
|
#: templates/calendar_view/fragments/list.html:42
|
||||||
#: templates/calendar_view/fragments/list.html:44
|
#: templates/calendar_view/fragments/list.html:44
|
||||||
#: templates/calendar_view/fragments/list.html:52
|
#: templates/calendar_view/fragments/list.html:52
|
||||||
@@ -1508,7 +1508,7 @@ msgstr "Entité"
|
|||||||
msgid "Income"
|
msgid "Income"
|
||||||
msgstr "Revenus"
|
msgstr "Revenus"
|
||||||
|
|
||||||
#: apps/transactions/models.py:289 apps/transactions/models.py:968
|
#: apps/transactions/models.py:290 apps/transactions/models.py:972
|
||||||
#: templates/calendar_view/fragments/list.html:46
|
#: templates/calendar_view/fragments/list.html:46
|
||||||
#: templates/calendar_view/fragments/list.html:48
|
#: templates/calendar_view/fragments/list.html:48
|
||||||
#: templates/calendar_view/fragments/list.html:56
|
#: templates/calendar_view/fragments/list.html:56
|
||||||
@@ -1519,129 +1519,129 @@ msgstr "Revenus"
|
|||||||
msgid "Expense"
|
msgid "Expense"
|
||||||
msgstr "Dépense"
|
msgstr "Dépense"
|
||||||
|
|
||||||
#: apps/transactions/models.py:344 apps/transactions/models.py:578
|
#: apps/transactions/models.py:345 apps/transactions/models.py:582
|
||||||
msgid "Installment Plan"
|
msgid "Installment Plan"
|
||||||
msgstr "Plan d'aménagement"
|
msgstr "Plan d'aménagement"
|
||||||
|
|
||||||
#: apps/transactions/models.py:353 apps/transactions/models.py:802
|
#: apps/transactions/models.py:354 apps/transactions/models.py:806
|
||||||
msgid "Recurring Transaction"
|
msgid "Recurring Transaction"
|
||||||
msgstr "Transaction récurrente"
|
msgstr "Transaction récurrente"
|
||||||
|
|
||||||
#: apps/transactions/models.py:361
|
#: apps/transactions/models.py:362
|
||||||
msgid "Deleted"
|
msgid "Deleted"
|
||||||
msgstr "Supprimé"
|
msgstr "Supprimé"
|
||||||
|
|
||||||
#: apps/transactions/models.py:366
|
#: apps/transactions/models.py:367
|
||||||
msgid "Deleted At"
|
msgid "Deleted At"
|
||||||
msgstr "Supprimé à"
|
msgstr "Supprimé à"
|
||||||
|
|
||||||
#: apps/transactions/models.py:458 templates/tags/fragments/table.html:71
|
#: apps/transactions/models.py:462 templates/tags/fragments/table.html:71
|
||||||
msgid "No tags"
|
msgid "No tags"
|
||||||
msgstr "Aucunes étiquettes"
|
msgstr "Aucunes étiquettes"
|
||||||
|
|
||||||
#: apps/transactions/models.py:460
|
#: apps/transactions/models.py:464
|
||||||
msgid "No category"
|
msgid "No category"
|
||||||
msgstr "Pas de catégorie"
|
msgstr "Pas de catégorie"
|
||||||
|
|
||||||
#: apps/transactions/models.py:462
|
#: apps/transactions/models.py:466
|
||||||
msgid "No description"
|
msgid "No description"
|
||||||
msgstr "Pas de description"
|
msgstr "Pas de description"
|
||||||
|
|
||||||
#: apps/transactions/models.py:510 templates/includes/sidebar.html:67
|
#: apps/transactions/models.py:514 templates/includes/sidebar.html:59
|
||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr "Annuel"
|
msgstr "Annuel"
|
||||||
|
|
||||||
#: apps/transactions/models.py:511 apps/users/models.py:464
|
#: apps/transactions/models.py:515 apps/users/models.py:464
|
||||||
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:61
|
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:53
|
||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr "Mensuel"
|
msgstr "Mensuel"
|
||||||
|
|
||||||
#: apps/transactions/models.py:512
|
#: apps/transactions/models.py:516
|
||||||
msgid "Weekly"
|
msgid "Weekly"
|
||||||
msgstr "Hebdomadaire"
|
msgstr "Hebdomadaire"
|
||||||
|
|
||||||
#: apps/transactions/models.py:513
|
#: apps/transactions/models.py:517
|
||||||
msgid "Daily"
|
msgid "Daily"
|
||||||
msgstr "Quotidien"
|
msgstr "Quotidien"
|
||||||
|
|
||||||
#: apps/transactions/models.py:526
|
#: apps/transactions/models.py:530
|
||||||
msgid "Number of Installments"
|
msgid "Number of Installments"
|
||||||
msgstr "Nombre d'écheances"
|
msgstr "Nombre d'écheances"
|
||||||
|
|
||||||
#: apps/transactions/models.py:531
|
#: apps/transactions/models.py:535
|
||||||
msgid "Installment Start"
|
msgid "Installment Start"
|
||||||
msgstr "Commencer à l'échéance"
|
msgstr "Commencer à l'échéance"
|
||||||
|
|
||||||
#: apps/transactions/models.py:532
|
#: apps/transactions/models.py:536
|
||||||
msgid "The installment number to start counting from"
|
msgid "The installment number to start counting from"
|
||||||
msgstr "L'échéance à partir de laquelle compter"
|
msgstr "L'échéance à partir de laquelle compter"
|
||||||
|
|
||||||
#: apps/transactions/models.py:537 apps/transactions/models.py:772
|
#: apps/transactions/models.py:541 apps/transactions/models.py:776
|
||||||
msgid "Start Date"
|
msgid "Start Date"
|
||||||
msgstr "Date de début"
|
msgstr "Date de début"
|
||||||
|
|
||||||
#: apps/transactions/models.py:541 apps/transactions/models.py:773
|
#: apps/transactions/models.py:545 apps/transactions/models.py:777
|
||||||
msgid "End Date"
|
msgid "End Date"
|
||||||
msgstr "Date de fin"
|
msgstr "Date de fin"
|
||||||
|
|
||||||
#: apps/transactions/models.py:546
|
#: apps/transactions/models.py:550
|
||||||
msgid "Recurrence"
|
msgid "Recurrence"
|
||||||
msgstr "Récurrence"
|
msgstr "Récurrence"
|
||||||
|
|
||||||
#: apps/transactions/models.py:549
|
#: apps/transactions/models.py:553
|
||||||
msgid "Installment Amount"
|
msgid "Installment Amount"
|
||||||
msgstr "Montant des échéances"
|
msgstr "Montant des échéances"
|
||||||
|
|
||||||
#: apps/transactions/models.py:568 apps/transactions/models.py:792
|
#: apps/transactions/models.py:572 apps/transactions/models.py:796
|
||||||
msgid "Add description to transactions"
|
msgid "Add description to transactions"
|
||||||
msgstr "Rajouter une description à la transaction"
|
msgstr "Rajouter une description à la transaction"
|
||||||
|
|
||||||
#: apps/transactions/models.py:571 apps/transactions/models.py:795
|
#: apps/transactions/models.py:575 apps/transactions/models.py:799
|
||||||
msgid "Add notes to transactions"
|
msgid "Add notes to transactions"
|
||||||
msgstr "Ajouter des notes aux transactions"
|
msgstr "Ajouter des notes aux transactions"
|
||||||
|
|
||||||
#: apps/transactions/models.py:731
|
#: apps/transactions/models.py:735
|
||||||
msgid "day(s)"
|
msgid "day(s)"
|
||||||
msgstr "jour(s)"
|
msgstr "jour(s)"
|
||||||
|
|
||||||
#: apps/transactions/models.py:732
|
#: apps/transactions/models.py:736
|
||||||
msgid "week(s)"
|
msgid "week(s)"
|
||||||
msgstr "semaine(s)"
|
msgstr "semaine(s)"
|
||||||
|
|
||||||
#: apps/transactions/models.py:733
|
#: apps/transactions/models.py:737
|
||||||
msgid "month(s)"
|
msgid "month(s)"
|
||||||
msgstr "mois"
|
msgstr "mois"
|
||||||
|
|
||||||
#: apps/transactions/models.py:734
|
#: apps/transactions/models.py:738
|
||||||
msgid "year(s)"
|
msgid "year(s)"
|
||||||
msgstr "année(s)"
|
msgstr "année(s)"
|
||||||
|
|
||||||
#: apps/transactions/models.py:736
|
#: apps/transactions/models.py:740
|
||||||
#: templates/recurring_transactions/fragments/list.html:24
|
#: templates/recurring_transactions/fragments/list.html:24
|
||||||
msgid "Paused"
|
msgid "Paused"
|
||||||
msgstr "Interrompu"
|
msgstr "Interrompu"
|
||||||
|
|
||||||
#: apps/transactions/models.py:775
|
#: apps/transactions/models.py:779
|
||||||
msgid "Recurrence Type"
|
msgid "Recurrence Type"
|
||||||
msgstr "Type de récurrence"
|
msgstr "Type de récurrence"
|
||||||
|
|
||||||
#: apps/transactions/models.py:778
|
#: apps/transactions/models.py:782
|
||||||
msgid "Recurrence Interval"
|
msgid "Recurrence Interval"
|
||||||
msgstr "Interval de récurrence"
|
msgstr "Interval de récurrence"
|
||||||
|
|
||||||
#: apps/transactions/models.py:781
|
#: apps/transactions/models.py:785
|
||||||
msgid "Keep at most"
|
msgid "Keep at most"
|
||||||
msgstr "Répéter un maximum de"
|
msgstr "Répéter un maximum de"
|
||||||
|
|
||||||
#: apps/transactions/models.py:785
|
#: apps/transactions/models.py:789
|
||||||
msgid "Last Generated Date"
|
msgid "Last Generated Date"
|
||||||
msgstr "Dernière date générée"
|
msgstr "Dernière date générée"
|
||||||
|
|
||||||
#: apps/transactions/models.py:788
|
#: apps/transactions/models.py:792
|
||||||
msgid "Last Generated Reference Date"
|
msgid "Last Generated Reference Date"
|
||||||
msgstr "Dernière date de référence générée"
|
msgstr "Dernière date de référence générée"
|
||||||
|
|
||||||
#: apps/transactions/models.py:1034
|
#: apps/transactions/models.py:1038
|
||||||
#: apps/transactions/views/quick_transactions.py:177
|
#: apps/transactions/views/quick_transactions.py:177
|
||||||
#: apps/transactions/views/quick_transactions.py:186
|
#: apps/transactions/views/quick_transactions.py:186
|
||||||
#: apps/transactions/views/quick_transactions.py:188
|
#: apps/transactions/views/quick_transactions.py:188
|
||||||
@@ -1650,8 +1650,8 @@ msgstr "Dernière date de référence générée"
|
|||||||
msgid "Quick Transaction"
|
msgid "Quick Transaction"
|
||||||
msgstr "Transaction rapide"
|
msgstr "Transaction rapide"
|
||||||
|
|
||||||
#: apps/transactions/models.py:1035 templates/includes/navbar.html:73
|
#: apps/transactions/models.py:1039 templates/includes/navbar.html:73
|
||||||
#: templates/includes/sidebar.html:108
|
#: templates/includes/sidebar.html:100
|
||||||
#: templates/quick_transactions/pages/index.html:5
|
#: templates/quick_transactions/pages/index.html:5
|
||||||
#: templates/quick_transactions/pages/index.html:11
|
#: templates/quick_transactions/pages/index.html:11
|
||||||
msgid "Quick Transactions"
|
msgid "Quick Transactions"
|
||||||
@@ -1979,7 +1979,7 @@ msgid "All Transactions"
|
|||||||
msgstr "Toutes les transactions"
|
msgstr "Toutes les transactions"
|
||||||
|
|
||||||
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
||||||
#: templates/includes/sidebar.html:73
|
#: templates/includes/sidebar.html:65
|
||||||
msgid "Calendar"
|
msgid "Calendar"
|
||||||
msgstr "Calendrier"
|
msgstr "Calendrier"
|
||||||
|
|
||||||
@@ -2091,6 +2091,7 @@ msgstr "Editer"
|
|||||||
#: templates/quick_transactions/fragments/list.html:34
|
#: templates/quick_transactions/fragments/list.html:34
|
||||||
#: templates/recurring_transactions/fragments/table.html:93
|
#: templates/recurring_transactions/fragments/table.html:93
|
||||||
#: templates/rules/fragments/list.html:45
|
#: templates/rules/fragments/list.html:45
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:61
|
#: templates/rules/fragments/transaction_rule/view.html:61
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:96
|
#: templates/rules/fragments/transaction_rule/view.html:96
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:137
|
#: templates/rules/fragments/transaction_rule/view.html:137
|
||||||
@@ -2216,6 +2217,8 @@ msgid "Current balance"
|
|||||||
msgstr "Balance actuelle"
|
msgstr "Balance actuelle"
|
||||||
|
|
||||||
#: templates/accounts/fragments/account_reconciliation.html:39
|
#: templates/accounts/fragments/account_reconciliation.html:39
|
||||||
|
#: templates/net_worth/net_worth.html:105
|
||||||
|
#: templates/net_worth/net_worth.html:362
|
||||||
msgid "Difference"
|
msgid "Difference"
|
||||||
msgstr "Différence"
|
msgstr "Différence"
|
||||||
|
|
||||||
@@ -2310,7 +2313,7 @@ msgid "Pick a month"
|
|||||||
msgstr "Sélectionner un mois"
|
msgstr "Sélectionner un mois"
|
||||||
|
|
||||||
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
||||||
#: templates/includes/sidebar.html:53
|
#: templates/includes/sidebar.html:45
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Fermer"
|
msgstr "Fermer"
|
||||||
|
|
||||||
@@ -2388,7 +2391,7 @@ msgstr "Revenu à date"
|
|||||||
#: templates/cotton/ui/account_card.html:120
|
#: templates/cotton/ui/account_card.html:120
|
||||||
#: templates/cotton/ui/currency_card.html:114
|
#: templates/cotton/ui/currency_card.html:114
|
||||||
msgid "current expenses"
|
msgid "current expenses"
|
||||||
msgstr "Dépenses à date"
|
msgstr "dépenses actuelles"
|
||||||
|
|
||||||
#: templates/cotton/ui/account_card.html:146
|
#: templates/cotton/ui/account_card.html:146
|
||||||
#: templates/cotton/ui/currency_card.html:140
|
#: templates/cotton/ui/currency_card.html:140
|
||||||
@@ -2591,19 +2594,19 @@ msgstr "Prix actuel"
|
|||||||
msgid "Amount Bought"
|
msgid "Amount Bought"
|
||||||
msgstr "Montant acheté"
|
msgstr "Montant acheté"
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:390
|
#: templates/dca/fragments/strategy/details.html:392
|
||||||
msgid "Entry Price vs Current Price"
|
msgid "Entry Price vs Current Price"
|
||||||
msgstr "Prix d'entrée Vs Prix actuel"
|
msgstr "Prix d'entrée Vs Prix actuel"
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:406
|
#: templates/dca/fragments/strategy/details.html:408
|
||||||
msgid "Days Between Investments"
|
msgid "Days Between Investments"
|
||||||
msgstr "Jours entre les investissements"
|
msgstr "Jours entre les investissements"
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:453
|
#: templates/dca/fragments/strategy/details.html:455
|
||||||
msgid "Investment Frequency"
|
msgid "Investment Frequency"
|
||||||
msgstr "Fréquence d'investissement"
|
msgstr "Fréquence d'investissement"
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:455
|
#: templates/dca/fragments/strategy/details.html:457
|
||||||
msgid "The straighter the blue line, the more consistent your DCA strategy is."
|
msgid "The straighter the blue line, the more consistent your DCA strategy is."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Plus la ligne bleue est droite, plus votre stratégie DCA est cohérente."
|
"Plus la ligne bleue est droite, plus votre stratégie DCA est cohérente."
|
||||||
@@ -2644,7 +2647,7 @@ msgid "Edit exchange rate"
|
|||||||
msgstr "Modifier le taux de change"
|
msgstr "Modifier le taux de change"
|
||||||
|
|
||||||
#: templates/exchange_rates/fragments/list.html:25
|
#: templates/exchange_rates/fragments/list.html:25
|
||||||
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:93
|
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:85
|
||||||
#: templates/installment_plans/fragments/list.html:21
|
#: templates/installment_plans/fragments/list.html:21
|
||||||
#: templates/yearly_overview/pages/overview_by_account.html:105
|
#: templates/yearly_overview/pages/overview_by_account.html:105
|
||||||
#: templates/yearly_overview/pages/overview_by_currency.html:107
|
#: templates/yearly_overview/pages/overview_by_currency.html:107
|
||||||
@@ -2701,7 +2704,7 @@ msgid "No services configured"
|
|||||||
msgstr "Pas de services configurés"
|
msgstr "Pas de services configurés"
|
||||||
|
|
||||||
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
|
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
|
||||||
#: templates/includes/sidebar.html:247
|
#: templates/includes/sidebar.html:239
|
||||||
msgid "Export and Restore"
|
msgid "Export and Restore"
|
||||||
msgstr "Export et Restauration"
|
msgstr "Export et Restauration"
|
||||||
|
|
||||||
@@ -2800,72 +2803,72 @@ msgstr "Activer la navigation"
|
|||||||
msgid "Overview"
|
msgid "Overview"
|
||||||
msgstr "Aperçu"
|
msgstr "Aperçu"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
|
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:77
|
||||||
msgid "Net Worth"
|
msgid "Net Worth"
|
||||||
msgstr "Valeur nette"
|
msgstr "Valeur nette"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:45
|
#: templates/includes/navbar.html:45
|
||||||
#: templates/insights/fragments/category_overview/index.html:65
|
#: templates/insights/fragments/category_overview/index.html:65
|
||||||
#: templates/net_worth/net_worth.html:22
|
#: templates/net_worth/net_worth.html:23
|
||||||
msgid "Current"
|
msgid "Current"
|
||||||
msgstr "A date"
|
msgstr "A date"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:79
|
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:71
|
||||||
#: templates/insights/pages/index.html:5
|
#: templates/insights/pages/index.html:5
|
||||||
msgid "Insights"
|
msgid "Insights"
|
||||||
msgstr "Aperçus"
|
msgstr "Aperçus"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
|
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:93
|
||||||
msgid "Trash Can"
|
msgid "Trash Can"
|
||||||
msgstr "Corbeille"
|
msgstr "Corbeille"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
|
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:118
|
||||||
msgid "Tools"
|
msgid "Tools"
|
||||||
msgstr "Outils"
|
msgstr "Outils"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:128
|
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:120
|
||||||
msgid "Dollar Cost Average Tracker"
|
msgid "Dollar Cost Average Tracker"
|
||||||
msgstr "Suivi Dollar Cost Average"
|
msgstr "Suivi Dollar Cost Average"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:134
|
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:126
|
||||||
#: templates/mini_tools/unit_price_calculator.html:5
|
#: templates/mini_tools/unit_price_calculator.html:5
|
||||||
#: templates/mini_tools/unit_price_calculator.html:10
|
#: templates/mini_tools/unit_price_calculator.html:10
|
||||||
msgid "Unit Price Calculator"
|
msgid "Unit Price Calculator"
|
||||||
msgstr "Calculateur de prix unitaire"
|
msgstr "Calculateur de prix unitaire"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:140
|
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:132
|
||||||
#: templates/mini_tools/currency_converter/currency_converter.html:8
|
#: templates/mini_tools/currency_converter/currency_converter.html:8
|
||||||
#: templates/mini_tools/currency_converter/currency_converter.html:15
|
#: templates/mini_tools/currency_converter/currency_converter.html:15
|
||||||
msgid "Currency Converter"
|
msgid "Currency Converter"
|
||||||
msgstr "Convertisseur de devises"
|
msgstr "Convertisseur de devises"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
|
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:150
|
||||||
#: templates/includes/sidebar.html:171
|
#: templates/includes/sidebar.html:163
|
||||||
msgid "Management"
|
msgid "Management"
|
||||||
msgstr "Gestion"
|
msgstr "Gestion"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
|
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:224
|
||||||
msgid "Automation"
|
msgid "Automation"
|
||||||
msgstr "Automatisation"
|
msgstr "Automatisation"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
|
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:253
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "Admin"
|
msgstr "Admin"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:270
|
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:262
|
||||||
msgid "Only use this if you know what you're doing"
|
msgid "Only use this if you know what you're doing"
|
||||||
msgstr "A n'utiliser que si vous savez ce que vous faites"
|
msgstr "A n'utiliser que si vous savez ce que vous faites"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
|
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:261
|
||||||
msgid "Django Admin"
|
msgid "Django Admin"
|
||||||
msgstr "Administration Django"
|
msgstr "Administration Django"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
|
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:276
|
||||||
msgid "is available"
|
msgid "is available"
|
||||||
msgstr "est disponible"
|
msgstr "est disponible"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
||||||
#: templates/includes/sidebar.html:290
|
#: templates/includes/sidebar.html:282
|
||||||
msgid "Calculator"
|
msgid "Calculator"
|
||||||
msgstr "Calculatrice"
|
msgstr "Calculatrice"
|
||||||
|
|
||||||
@@ -2971,7 +2974,7 @@ msgstr "Total"
|
|||||||
|
|
||||||
#: templates/insights/fragments/category_overview/index.html:517
|
#: templates/insights/fragments/category_overview/index.html:517
|
||||||
msgid "Final Total"
|
msgid "Final Total"
|
||||||
msgstr "Total final"
|
msgstr "Total Final"
|
||||||
|
|
||||||
#: templates/insights/fragments/emergency_fund.html:15
|
#: templates/insights/fragments/emergency_fund.html:15
|
||||||
msgid "You've spent an average of"
|
msgid "You've spent an average of"
|
||||||
@@ -3202,25 +3205,29 @@ msgstr "Filtrer les transactions"
|
|||||||
msgid "Order by"
|
msgid "Order by"
|
||||||
msgstr "Trier par"
|
msgstr "Trier par"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:40
|
#: templates/net_worth/net_worth.html:42
|
||||||
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
||||||
msgid "By currency"
|
msgid "By currency"
|
||||||
msgstr "Par devises"
|
msgstr "Par devises"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:75
|
#: templates/net_worth/net_worth.html:78
|
||||||
msgid "Consolidated"
|
msgid "Consolidated"
|
||||||
msgstr "Consolidé"
|
msgstr "Consolidé"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:104
|
#: templates/net_worth/net_worth.html:101
|
||||||
|
msgid "Evolution"
|
||||||
|
msgstr "Evolution"
|
||||||
|
|
||||||
|
#: templates/net_worth/net_worth.html:128
|
||||||
#: templates/yearly_overview/pages/overview_by_account.html:7
|
#: templates/yearly_overview/pages/overview_by_account.html:7
|
||||||
msgid "By account"
|
msgid "By account"
|
||||||
msgstr "Par comptes"
|
msgstr "Par comptes"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:211
|
#: templates/net_worth/net_worth.html:236
|
||||||
msgid "Evolution by currency"
|
msgid "Evolution by currency"
|
||||||
msgstr "Evolution par devises"
|
msgstr "Evolution par devises"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:275
|
#: templates/net_worth/net_worth.html:300
|
||||||
msgid "Evolution by account"
|
msgid "Evolution by account"
|
||||||
msgstr "Evolution par comptes"
|
msgstr "Evolution par comptes"
|
||||||
|
|
||||||
@@ -3324,20 +3331,18 @@ msgid "Add transaction rule"
|
|||||||
msgstr "Ajouter une règle de transaction"
|
msgstr "Ajouter une règle de transaction"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
#: templates/rules/fragments/transaction_rule/view.html:127
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
msgid "Create"
|
||||||
#: templates/rules/fragments/transaction_rule/edit.html:5
|
msgstr "Créer"
|
||||||
msgid "Edit transaction rule"
|
|
||||||
msgstr "Modifier une règle de transaction"
|
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:8
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:8
|
||||||
msgid "Visual"
|
msgid "Visual"
|
||||||
msgstr ""
|
msgstr "Illustration"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:21
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:21
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:92
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:92
|
||||||
msgid "Run a test to see..."
|
msgid "Run a test to see..."
|
||||||
msgstr ""
|
msgstr "Lancer un test..."
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:30
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:30
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:39
|
#: templates/rules/fragments/transaction_rule/view.html:39
|
||||||
@@ -3352,10 +3357,8 @@ msgid "Update or create transaction"
|
|||||||
msgstr "Mettre à jour ou créer une transaction"
|
msgstr "Mettre à jour ou créer une transaction"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:42
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:42
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Start Date"
|
|
||||||
msgid "Start"
|
msgid "Start"
|
||||||
msgstr "Date de début"
|
msgstr "Début"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:51
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:51
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:44
|
#: templates/rules/fragments/transaction_rule/view.html:44
|
||||||
@@ -3368,10 +3371,12 @@ msgid "to"
|
|||||||
msgstr "pour"
|
msgstr "pour"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:70
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:70
|
||||||
#, fuzzy
|
|
||||||
#| msgid "No transactions on this date"
|
|
||||||
msgid "No transaction found, a new one will be created"
|
msgid "No transaction found, a new one will be created"
|
||||||
msgstr "Aucunes transactions à cette date"
|
msgstr "Aucunes transactions trouvées, une nouvelle va être créée"
|
||||||
|
|
||||||
|
#: templates/rules/fragments/transaction_rule/edit.html:5
|
||||||
|
msgid "Edit transaction rule"
|
||||||
|
msgstr "Modifier une règle de transaction"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/transaction_rule_action/add.html:5
|
#: templates/rules/fragments/transaction_rule/transaction_rule_action/add.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/update_or_create_transaction_rule_action/add.html:5
|
#: templates/rules/fragments/transaction_rule/update_or_create_transaction_rule_action/add.html:5
|
||||||
@@ -3403,10 +3408,6 @@ msgstr "Modifier pour visualiser"
|
|||||||
msgid "This rule has no actions"
|
msgid "This rule has no actions"
|
||||||
msgstr "Cette règle n'a pas d'actions"
|
msgstr "Cette règle n'a pas d'actions"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:127
|
|
||||||
msgid "Create"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:144
|
#: templates/rules/fragments/transaction_rule/view.html:144
|
||||||
msgid "Add new"
|
msgid "Add new"
|
||||||
msgstr "Ajouter nouveau"
|
msgstr "Ajouter nouveau"
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
+152
-143
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-07 13:08+0000\n"
|
"POT-Creation-Date: 2025-09-20 14:08+0000\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: Automatically generated\n"
|
"Last-Translator: Automatically generated\n"
|
||||||
"Language-Team: none\n"
|
"Language-Team: none\n"
|
||||||
@@ -21,7 +21,7 @@ msgstr ""
|
|||||||
msgid "Group name"
|
msgid "Group name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/accounts/forms.py:42 apps/accounts/forms.py:118
|
#: apps/accounts/forms.py:42 apps/accounts/forms.py:112
|
||||||
#: apps/currencies/forms.py:55 apps/currencies/forms.py:93
|
#: 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/currencies/forms.py:146 apps/dca/forms.py:49 apps/dca/forms.py:224
|
||||||
#: apps/import_app/forms.py:34 apps/rules/forms.py:57 apps/rules/forms.py:101
|
#: apps/import_app/forms.py:34 apps/rules/forms.py:57 apps/rules/forms.py:101
|
||||||
@@ -31,11 +31,12 @@ msgstr ""
|
|||||||
#: apps/transactions/forms.py:953 apps/transactions/forms.py:988
|
#: apps/transactions/forms.py:953 apps/transactions/forms.py:988
|
||||||
#: apps/transactions/forms.py:1142 apps/users/forms.py:217
|
#: apps/transactions/forms.py:1142 apps/users/forms.py:217
|
||||||
#: apps/users/forms.py:379
|
#: apps/users/forms.py:379
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:132
|
#: templates/rules/fragments/transaction_rule/view.html:132
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/accounts/forms.py:50 apps/accounts/forms.py:126
|
#: apps/accounts/forms.py:50 apps/accounts/forms.py:120
|
||||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
||||||
#: apps/currencies/forms.py:101 apps/currencies/forms.py:154
|
#: apps/currencies/forms.py:101 apps/currencies/forms.py:154
|
||||||
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
|
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
|
||||||
@@ -69,35 +70,35 @@ msgstr ""
|
|||||||
msgid "Group"
|
msgid "Group"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/accounts/forms.py:135
|
#: apps/accounts/forms.py:129
|
||||||
msgid "New balance"
|
msgid "New balance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/accounts/forms.py:141 apps/dca/forms.py:85 apps/dca/forms.py:92
|
#: apps/accounts/forms.py:135 apps/dca/forms.py:85 apps/dca/forms.py:92
|
||||||
#: apps/insights/forms.py:118 apps/rules/forms.py:185 apps/rules/forms.py:201
|
#: apps/insights/forms.py:118 apps/rules/forms.py:185 apps/rules/forms.py:201
|
||||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:263
|
#: apps/transactions/forms.py:44 apps/transactions/forms.py:263
|
||||||
#: apps/transactions/forms.py:438 apps/transactions/forms.py:540
|
#: apps/transactions/forms.py:438 apps/transactions/forms.py:540
|
||||||
#: apps/transactions/forms.py:547 apps/transactions/forms.py:759
|
#: apps/transactions/forms.py:547 apps/transactions/forms.py:759
|
||||||
#: apps/transactions/forms.py:1020 apps/transactions/models.py:322
|
#: apps/transactions/forms.py:1020 apps/transactions/models.py:323
|
||||||
#: apps/transactions/models.py:556 apps/transactions/models.py:756
|
#: apps/transactions/models.py:560 apps/transactions/models.py:760
|
||||||
#: apps/transactions/models.py:1006
|
#: apps/transactions/models.py:1010
|
||||||
#: templates/insights/fragments/category_overview/index.html:78
|
#: templates/insights/fragments/category_overview/index.html:78
|
||||||
#: templates/insights/fragments/category_overview/index.html:530
|
#: templates/insights/fragments/category_overview/index.html:530
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/accounts/forms.py:148 apps/dca/forms.py:101 apps/dca/forms.py:109
|
#: apps/accounts/forms.py:142 apps/dca/forms.py:101 apps/dca/forms.py:109
|
||||||
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135
|
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135
|
||||||
#: apps/rules/forms.py:188 apps/rules/forms.py:198 apps/rules/models.py:45
|
#: apps/rules/forms.py:188 apps/rules/forms.py:198 apps/rules/models.py:45
|
||||||
#: apps/rules/models.py:315 apps/transactions/filters.py:69
|
#: apps/rules/models.py:315 apps/transactions/filters.py:69
|
||||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:271
|
#: apps/transactions/forms.py:52 apps/transactions/forms.py:271
|
||||||
#: apps/transactions/forms.py:446 apps/transactions/forms.py:556
|
#: apps/transactions/forms.py:446 apps/transactions/forms.py:556
|
||||||
#: apps/transactions/forms.py:564 apps/transactions/forms.py:752
|
#: apps/transactions/forms.py:564 apps/transactions/forms.py:752
|
||||||
#: apps/transactions/forms.py:1013 apps/transactions/models.py:328
|
#: apps/transactions/forms.py:1013 apps/transactions/models.py:329
|
||||||
#: apps/transactions/models.py:558 apps/transactions/models.py:760
|
#: apps/transactions/models.py:562 apps/transactions/models.py:764
|
||||||
#: apps/transactions/models.py:1012 templates/includes/navbar.html:111
|
#: apps/transactions/models.py:1016 templates/includes/navbar.html:111
|
||||||
#: templates/includes/sidebar.html:192
|
#: templates/includes/sidebar.html:184
|
||||||
#: templates/insights/fragments/category_overview/index.html:36
|
#: templates/insights/fragments/category_overview/index.html:36
|
||||||
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
@@ -105,8 +106,8 @@ msgstr ""
|
|||||||
|
|
||||||
#: apps/accounts/models.py:12 apps/accounts/models.py:29 apps/dca/models.py:13
|
#: apps/accounts/models.py:12 apps/accounts/models.py:29 apps/dca/models.py:13
|
||||||
#: apps/import_app/models.py:14 apps/rules/models.py:13
|
#: apps/import_app/models.py:14 apps/rules/models.py:13
|
||||||
#: apps/transactions/models.py:214 apps/transactions/models.py:239
|
#: apps/transactions/models.py:215 apps/transactions/models.py:240
|
||||||
#: apps/transactions/models.py:263 apps/transactions/models.py:974
|
#: apps/transactions/models.py:264 apps/transactions/models.py:978
|
||||||
#: templates/account_groups/fragments/list.html:25
|
#: templates/account_groups/fragments/list.html:25
|
||||||
#: templates/accounts/fragments/list.html:25
|
#: templates/accounts/fragments/list.html:25
|
||||||
#: templates/categories/fragments/table.html:16
|
#: templates/categories/fragments/table.html:16
|
||||||
@@ -129,7 +130,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
||||||
#: templates/account_groups/pages/index.html:4
|
#: templates/account_groups/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:212
|
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:204
|
||||||
msgid "Account Groups"
|
msgid "Account Groups"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -175,9 +176,9 @@ msgstr ""
|
|||||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:283
|
#: apps/transactions/forms.py:64 apps/transactions/forms.py:283
|
||||||
#: apps/transactions/forms.py:405 apps/transactions/forms.py:744
|
#: apps/transactions/forms.py:405 apps/transactions/forms.py:744
|
||||||
#: apps/transactions/forms.py:1005 apps/transactions/models.py:294
|
#: apps/transactions/forms.py:1005 apps/transactions/models.py:295
|
||||||
#: apps/transactions/models.py:516 apps/transactions/models.py:738
|
#: apps/transactions/models.py:520 apps/transactions/models.py:742
|
||||||
#: apps/transactions/models.py:980
|
#: apps/transactions/models.py:984
|
||||||
#: templates/installment_plans/fragments/table.html:17
|
#: templates/installment_plans/fragments/table.html:17
|
||||||
#: templates/quick_transactions/fragments/list.html:14
|
#: templates/quick_transactions/fragments/list.html:14
|
||||||
#: templates/recurring_transactions/fragments/table.html:19
|
#: templates/recurring_transactions/fragments/table.html:19
|
||||||
@@ -190,8 +191,8 @@ msgstr ""
|
|||||||
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
||||||
#: templates/accounts/fragments/list.html:5
|
#: templates/accounts/fragments/list.html:5
|
||||||
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
||||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
|
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:196
|
||||||
#: templates/includes/sidebar.html:206
|
#: templates/includes/sidebar.html:198
|
||||||
#: templates/monthly_overview/pages/overview.html:94
|
#: templates/monthly_overview/pages/overview.html:94
|
||||||
#: templates/transactions/fragments/summary.html:12
|
#: templates/transactions/fragments/summary.html:12
|
||||||
#: templates/transactions/pages/transactions.html:137
|
#: templates/transactions/pages/transactions.html:137
|
||||||
@@ -494,7 +495,7 @@ msgstr ""
|
|||||||
#: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:180
|
#: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:180
|
||||||
#: apps/rules/forms.py:194 apps/rules/models.py:38 apps/rules/models.py:279
|
#: apps/rules/forms.py:194 apps/rules/models.py:38 apps/rules/models.py:279
|
||||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:410
|
#: apps/transactions/forms.py:68 apps/transactions/forms.py:410
|
||||||
#: apps/transactions/forms.py:568 apps/transactions/models.py:304
|
#: apps/transactions/forms.py:568 apps/transactions/models.py:305
|
||||||
#: templates/dca/fragments/strategy/details.html:52
|
#: templates/dca/fragments/strategy/details.html:52
|
||||||
#: templates/exchange_rates/fragments/table.html:10
|
#: templates/exchange_rates/fragments/table.html:10
|
||||||
#: templates/exchange_rates_services/fragments/table.html:10
|
#: templates/exchange_rates_services/fragments/table.html:10
|
||||||
@@ -517,8 +518,8 @@ msgstr ""
|
|||||||
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60
|
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60
|
||||||
#: templates/currencies/fragments/list.html:5
|
#: templates/currencies/fragments/list.html:5
|
||||||
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
||||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
|
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:210
|
||||||
#: templates/includes/sidebar.html:220
|
#: templates/includes/sidebar.html:212
|
||||||
#: templates/monthly_overview/pages/overview.html:81
|
#: templates/monthly_overview/pages/overview.html:81
|
||||||
#: templates/transactions/fragments/summary.html:8
|
#: templates/transactions/fragments/summary.html:8
|
||||||
#: templates/transactions/pages/transactions.html:124
|
#: templates/transactions/pages/transactions.html:124
|
||||||
@@ -553,7 +554,7 @@ msgstr ""
|
|||||||
#: apps/currencies/models.py:82 apps/export_app/forms.py:68
|
#: apps/currencies/models.py:82 apps/export_app/forms.py:68
|
||||||
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
|
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
|
||||||
#: templates/exchange_rates/pages/index.html:4
|
#: templates/exchange_rates/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:226
|
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:218
|
||||||
msgid "Exchange Rates"
|
msgid "Exchange Rates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -581,8 +582,8 @@ msgstr ""
|
|||||||
msgid "Service Type"
|
msgid "Service Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/currencies/models.py:118 apps/transactions/models.py:218
|
#: apps/currencies/models.py:118 apps/transactions/models.py:219
|
||||||
#: apps/transactions/models.py:242 apps/transactions/models.py:266
|
#: apps/transactions/models.py:243 apps/transactions/models.py:267
|
||||||
#: templates/categories/fragments/list.html:21
|
#: templates/categories/fragments/list.html:21
|
||||||
#: templates/entities/fragments/list.html:21
|
#: templates/entities/fragments/list.html:21
|
||||||
#: templates/recurring_transactions/fragments/list.html:21
|
#: templates/recurring_transactions/fragments/list.html:21
|
||||||
@@ -759,8 +760,8 @@ msgstr ""
|
|||||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:184
|
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:184
|
||||||
#: apps/rules/forms.py:200 apps/rules/models.py:43 apps/rules/models.py:295
|
#: apps/rules/forms.py:200 apps/rules/models.py:43 apps/rules/models.py:295
|
||||||
#: apps/transactions/forms.py:432 apps/transactions/forms.py:584
|
#: apps/transactions/forms.py:432 apps/transactions/forms.py:584
|
||||||
#: apps/transactions/models.py:318 apps/transactions/models.py:565
|
#: apps/transactions/models.py:319 apps/transactions/models.py:569
|
||||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1002
|
#: apps/transactions/models.py:770 apps/transactions/models.py:1006
|
||||||
msgid "Notes"
|
msgid "Notes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -817,15 +818,15 @@ msgid "Entry deleted successfully"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131
|
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131
|
||||||
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:263
|
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:255
|
||||||
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
|
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
||||||
#: apps/transactions/models.py:379 templates/includes/navbar.html:58
|
#: apps/transactions/models.py:380 templates/includes/navbar.html:58
|
||||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
|
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:83
|
||||||
#: templates/includes/sidebar.html:184
|
#: templates/includes/sidebar.html:176
|
||||||
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
||||||
#: templates/recurring_transactions/fragments/table.html:39
|
#: templates/recurring_transactions/fragments/table.html:39
|
||||||
#: templates/transactions/pages/transactions.html:5
|
#: templates/transactions/pages/transactions.html:5
|
||||||
@@ -835,7 +836,7 @@ msgstr ""
|
|||||||
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134
|
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134
|
||||||
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
||||||
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
||||||
#: templates/includes/sidebar.html:186
|
#: templates/includes/sidebar.html:178
|
||||||
msgid "Categories"
|
msgid "Categories"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -844,27 +845,27 @@ msgstr ""
|
|||||||
#: apps/rules/models.py:307 apps/transactions/filters.py:74
|
#: apps/rules/models.py:307 apps/transactions/filters.py:74
|
||||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:279
|
#: apps/transactions/forms.py:60 apps/transactions/forms.py:279
|
||||||
#: apps/transactions/forms.py:454 apps/transactions/forms.py:767
|
#: apps/transactions/forms.py:454 apps/transactions/forms.py:767
|
||||||
#: apps/transactions/forms.py:1028 apps/transactions/models.py:277
|
#: apps/transactions/forms.py:1028 apps/transactions/models.py:278
|
||||||
#: apps/transactions/models.py:333 apps/transactions/models.py:561
|
#: apps/transactions/models.py:334 apps/transactions/models.py:565
|
||||||
#: apps/transactions/models.py:763 apps/transactions/models.py:1017
|
#: apps/transactions/models.py:767 apps/transactions/models.py:1021
|
||||||
#: templates/entities/fragments/list.html:5
|
#: templates/entities/fragments/list.html:5
|
||||||
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
|
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
|
||||||
#: templates/includes/sidebar.html:198
|
#: templates/includes/sidebar.html:190
|
||||||
#: templates/insights/fragments/category_overview/index.html:49
|
#: templates/insights/fragments/category_overview/index.html:49
|
||||||
msgid "Entities"
|
msgid "Entities"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
||||||
#: apps/transactions/models.py:803 templates/includes/navbar.html:77
|
#: apps/transactions/models.py:807 templates/includes/navbar.html:77
|
||||||
#: templates/includes/sidebar.html:120
|
#: templates/includes/sidebar.html:112
|
||||||
#: templates/recurring_transactions/fragments/list.html:5
|
#: templates/recurring_transactions/fragments/list.html:5
|
||||||
#: templates/recurring_transactions/pages/index.html:4
|
#: templates/recurring_transactions/pages/index.html:4
|
||||||
msgid "Recurring Transactions"
|
msgid "Recurring Transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
||||||
#: apps/transactions/models.py:579 templates/includes/navbar.html:75
|
#: apps/transactions/models.py:583 templates/includes/navbar.html:75
|
||||||
#: templates/includes/sidebar.html:114
|
#: templates/includes/sidebar.html:106
|
||||||
#: templates/installment_plans/fragments/list.html:5
|
#: templates/installment_plans/fragments/list.html:5
|
||||||
#: templates/installment_plans/pages/index.html:4
|
#: templates/installment_plans/pages/index.html:4
|
||||||
msgid "Installment Plans"
|
msgid "Installment Plans"
|
||||||
@@ -873,12 +874,12 @@ msgstr ""
|
|||||||
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
||||||
#: templates/exchange_rates_services/fragments/list.html:6
|
#: templates/exchange_rates_services/fragments/list.html:6
|
||||||
#: templates/exchange_rates_services/pages/index.html:4
|
#: templates/exchange_rates_services/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:254
|
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:246
|
||||||
msgid "Automatic Exchange Rates"
|
msgid "Automatic Exchange Rates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135
|
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135
|
||||||
#: templates/includes/sidebar.html:234 templates/rules/fragments/list.html:5
|
#: templates/includes/sidebar.html:226 templates/rules/fragments/list.html:5
|
||||||
#: templates/rules/pages/index.html:4
|
#: templates/rules/pages/index.html:4
|
||||||
msgid "Rules"
|
msgid "Rules"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -948,7 +949,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: apps/import_app/forms.py:61
|
#: apps/import_app/forms.py:61
|
||||||
#: templates/import_app/fragments/profiles/list.html:62
|
#: templates/import_app/fragments/profiles/list.html:62
|
||||||
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:240
|
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:232
|
||||||
msgid "Import"
|
msgid "Import"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1109,15 +1110,15 @@ msgstr ""
|
|||||||
|
|
||||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:36
|
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:36
|
||||||
#: apps/rules/models.py:271 apps/transactions/forms.py:396
|
#: apps/rules/models.py:271 apps/transactions/forms.py:396
|
||||||
#: apps/transactions/models.py:301 apps/transactions/models.py:521
|
#: apps/transactions/models.py:302 apps/transactions/models.py:525
|
||||||
#: apps/transactions/models.py:744 apps/transactions/models.py:987
|
#: apps/transactions/models.py:748 apps/transactions/models.py:991
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:37
|
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:37
|
||||||
#: apps/rules/models.py:275 apps/transactions/filters.py:23
|
#: apps/rules/models.py:275 apps/transactions/filters.py:23
|
||||||
#: apps/transactions/forms.py:400 apps/transactions/models.py:303
|
#: apps/transactions/forms.py:400 apps/transactions/models.py:304
|
||||||
#: apps/transactions/models.py:989 templates/cotton/transaction/item.html:21
|
#: apps/transactions/models.py:993 templates/cotton/transaction/item.html:21
|
||||||
#: templates/cotton/transaction/item.html:32
|
#: templates/cotton/transaction/item.html:32
|
||||||
#: templates/transactions/widgets/paid_toggle_button.html:12
|
#: templates/transactions/widgets/paid_toggle_button.html:12
|
||||||
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:16
|
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:16
|
||||||
@@ -1127,15 +1128,15 @@ msgstr ""
|
|||||||
#: apps/rules/forms.py:181 apps/rules/forms.py:195 apps/rules/models.py:39
|
#: apps/rules/forms.py:181 apps/rules/forms.py:195 apps/rules/models.py:39
|
||||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||||
#: apps/transactions/forms.py:416 apps/transactions/forms.py:571
|
#: apps/transactions/forms.py:416 apps/transactions/forms.py:571
|
||||||
#: apps/transactions/forms.py:773 apps/transactions/models.py:305
|
#: apps/transactions/forms.py:773 apps/transactions/models.py:306
|
||||||
#: apps/transactions/models.py:539 apps/transactions/models.py:768
|
#: apps/transactions/models.py:543 apps/transactions/models.py:772
|
||||||
msgid "Reference Date"
|
msgid "Reference Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:182 apps/rules/forms.py:196 apps/rules/models.py:41
|
#: apps/rules/forms.py:182 apps/rules/forms.py:196 apps/rules/models.py:41
|
||||||
#: apps/rules/models.py:287 apps/transactions/forms.py:423
|
#: apps/rules/models.py:287 apps/transactions/forms.py:423
|
||||||
#: apps/transactions/models.py:311 apps/transactions/models.py:749
|
#: apps/transactions/models.py:312 apps/transactions/models.py:753
|
||||||
#: apps/transactions/models.py:995 templates/insights/fragments/sankey.html:95
|
#: apps/transactions/models.py:999 templates/insights/fragments/sankey.html:95
|
||||||
#: templates/installment_plans/fragments/table.html:18
|
#: templates/installment_plans/fragments/table.html:18
|
||||||
#: templates/quick_transactions/fragments/list.html:15
|
#: templates/quick_transactions/fragments/list.html:15
|
||||||
#: templates/recurring_transactions/fragments/table.html:20
|
#: templates/recurring_transactions/fragments/table.html:20
|
||||||
@@ -1145,27 +1146,27 @@ msgstr ""
|
|||||||
#: apps/rules/forms.py:183 apps/rules/forms.py:197 apps/rules/models.py:14
|
#: apps/rules/forms.py:183 apps/rules/forms.py:197 apps/rules/models.py:14
|
||||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:575
|
#: apps/transactions/forms.py:427 apps/transactions/forms.py:575
|
||||||
#: apps/transactions/models.py:316 apps/transactions/models.py:523
|
#: apps/transactions/models.py:317 apps/transactions/models.py:527
|
||||||
#: apps/transactions/models.py:752 apps/transactions/models.py:1000
|
#: apps/transactions/models.py:756 apps/transactions/models.py:1004
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:186 apps/rules/forms.py:202 apps/rules/models.py:47
|
#: apps/rules/forms.py:186 apps/rules/forms.py:202 apps/rules/models.py:47
|
||||||
#: apps/rules/models.py:299 apps/transactions/models.py:355
|
#: apps/rules/models.py:299 apps/transactions/models.py:356
|
||||||
#: apps/transactions/models.py:1022
|
#: apps/transactions/models.py:1026
|
||||||
msgid "Internal Note"
|
msgid "Internal Note"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:187 apps/rules/forms.py:203 apps/rules/models.py:48
|
#: apps/rules/forms.py:187 apps/rules/forms.py:203 apps/rules/models.py:48
|
||||||
#: apps/rules/models.py:303 apps/transactions/models.py:357
|
#: apps/rules/models.py:303 apps/transactions/models.py:358
|
||||||
#: apps/transactions/models.py:1024
|
#: apps/transactions/models.py:1028
|
||||||
msgid "Internal ID"
|
msgid "Internal ID"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:190 apps/rules/forms.py:204 apps/rules/models.py:40
|
#: apps/rules/forms.py:190 apps/rules/forms.py:204 apps/rules/models.py:40
|
||||||
#: apps/rules/models.py:319 apps/transactions/forms.py:588
|
#: apps/rules/models.py:319 apps/transactions/forms.py:588
|
||||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
#: apps/transactions/models.py:216 apps/transactions/models.py:307
|
||||||
#: apps/transactions/models.py:990
|
#: apps/transactions/models.py:994
|
||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1178,7 +1179,7 @@ msgid "Set Values"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:415 apps/rules/forms.py:452 apps/rules/forms.py:489
|
#: apps/rules/forms.py:415 apps/rules/forms.py:452 apps/rules/forms.py:489
|
||||||
#: apps/transactions/models.py:378
|
#: apps/transactions/models.py:379
|
||||||
msgid "Transaction"
|
msgid "Transaction"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1187,6 +1188,9 @@ msgid "Type to search for a transaction"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:431 apps/rules/forms.py:468 apps/rules/forms.py:504
|
#: apps/rules/forms.py:431 apps/rules/forms.py:468 apps/rules/forms.py:504
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:121
|
#: templates/rules/fragments/transaction_rule/view.html:121
|
||||||
msgid "Test"
|
msgid "Test"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1312,7 +1316,7 @@ msgstr ""
|
|||||||
#: apps/transactions/filters.py:24 templates/cotton/transaction/item.html:21
|
#: apps/transactions/filters.py:24 templates/cotton/transaction/item.html:21
|
||||||
#: templates/cotton/transaction/item.html:32 templates/includes/navbar.html:47
|
#: templates/cotton/transaction/item.html:32 templates/includes/navbar.html:47
|
||||||
#: templates/insights/fragments/category_overview/index.html:61
|
#: templates/insights/fragments/category_overview/index.html:61
|
||||||
#: templates/net_worth/net_worth.html:32
|
#: templates/net_worth/net_worth.html:33
|
||||||
#: templates/transactions/widgets/paid_toggle_button.html:8
|
#: templates/transactions/widgets/paid_toggle_button.html:8
|
||||||
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:12
|
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:12
|
||||||
msgid "Projected"
|
msgid "Projected"
|
||||||
@@ -1422,40 +1426,40 @@ msgstr ""
|
|||||||
msgid "End date should be after the start date"
|
msgid "End date should be after the start date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:220
|
#: apps/transactions/models.py:221
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated categories won't be able to be selected when creating new "
|
"Deactivated categories won't be able to be selected when creating new "
|
||||||
"transactions"
|
"transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:228
|
#: apps/transactions/models.py:229
|
||||||
msgid "Transaction Category"
|
msgid "Transaction Category"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:229
|
#: apps/transactions/models.py:230
|
||||||
msgid "Transaction Categories"
|
msgid "Transaction Categories"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:244
|
#: apps/transactions/models.py:245
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated tags won't be able to be selected when creating new transactions"
|
"Deactivated tags won't be able to be selected when creating new transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:252 apps/transactions/models.py:253
|
#: apps/transactions/models.py:253 apps/transactions/models.py:254
|
||||||
msgid "Transaction Tags"
|
msgid "Transaction Tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:268
|
#: apps/transactions/models.py:269
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated entities won't be able to be selected when creating new "
|
"Deactivated entities won't be able to be selected when creating new "
|
||||||
"transactions"
|
"transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:276
|
#: apps/transactions/models.py:277
|
||||||
msgid "Entity"
|
msgid "Entity"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:288 apps/transactions/models.py:967
|
#: apps/transactions/models.py:289 apps/transactions/models.py:971
|
||||||
#: templates/calendar_view/fragments/list.html:42
|
#: templates/calendar_view/fragments/list.html:42
|
||||||
#: templates/calendar_view/fragments/list.html:44
|
#: templates/calendar_view/fragments/list.html:44
|
||||||
#: templates/calendar_view/fragments/list.html:52
|
#: templates/calendar_view/fragments/list.html:52
|
||||||
@@ -1467,7 +1471,7 @@ msgstr ""
|
|||||||
msgid "Income"
|
msgid "Income"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:289 apps/transactions/models.py:968
|
#: apps/transactions/models.py:290 apps/transactions/models.py:972
|
||||||
#: templates/calendar_view/fragments/list.html:46
|
#: templates/calendar_view/fragments/list.html:46
|
||||||
#: templates/calendar_view/fragments/list.html:48
|
#: templates/calendar_view/fragments/list.html:48
|
||||||
#: templates/calendar_view/fragments/list.html:56
|
#: templates/calendar_view/fragments/list.html:56
|
||||||
@@ -1478,129 +1482,129 @@ msgstr ""
|
|||||||
msgid "Expense"
|
msgid "Expense"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:344 apps/transactions/models.py:578
|
#: apps/transactions/models.py:345 apps/transactions/models.py:582
|
||||||
msgid "Installment Plan"
|
msgid "Installment Plan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:353 apps/transactions/models.py:802
|
#: apps/transactions/models.py:354 apps/transactions/models.py:806
|
||||||
msgid "Recurring Transaction"
|
msgid "Recurring Transaction"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:361
|
#: apps/transactions/models.py:362
|
||||||
msgid "Deleted"
|
msgid "Deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:366
|
#: apps/transactions/models.py:367
|
||||||
msgid "Deleted At"
|
msgid "Deleted At"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:458 templates/tags/fragments/table.html:71
|
#: apps/transactions/models.py:462 templates/tags/fragments/table.html:71
|
||||||
msgid "No tags"
|
msgid "No tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:460
|
#: apps/transactions/models.py:464
|
||||||
msgid "No category"
|
msgid "No category"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:462
|
#: apps/transactions/models.py:466
|
||||||
msgid "No description"
|
msgid "No description"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:510 templates/includes/sidebar.html:67
|
#: apps/transactions/models.py:514 templates/includes/sidebar.html:59
|
||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:511 apps/users/models.py:464
|
#: apps/transactions/models.py:515 apps/users/models.py:464
|
||||||
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:61
|
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:53
|
||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:512
|
#: apps/transactions/models.py:516
|
||||||
msgid "Weekly"
|
msgid "Weekly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:513
|
#: apps/transactions/models.py:517
|
||||||
msgid "Daily"
|
msgid "Daily"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:526
|
#: apps/transactions/models.py:530
|
||||||
msgid "Number of Installments"
|
msgid "Number of Installments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:531
|
#: apps/transactions/models.py:535
|
||||||
msgid "Installment Start"
|
msgid "Installment Start"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:532
|
#: apps/transactions/models.py:536
|
||||||
msgid "The installment number to start counting from"
|
msgid "The installment number to start counting from"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:537 apps/transactions/models.py:772
|
#: apps/transactions/models.py:541 apps/transactions/models.py:776
|
||||||
msgid "Start Date"
|
msgid "Start Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:541 apps/transactions/models.py:773
|
#: apps/transactions/models.py:545 apps/transactions/models.py:777
|
||||||
msgid "End Date"
|
msgid "End Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:546
|
#: apps/transactions/models.py:550
|
||||||
msgid "Recurrence"
|
msgid "Recurrence"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:549
|
#: apps/transactions/models.py:553
|
||||||
msgid "Installment Amount"
|
msgid "Installment Amount"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:568 apps/transactions/models.py:792
|
#: apps/transactions/models.py:572 apps/transactions/models.py:796
|
||||||
msgid "Add description to transactions"
|
msgid "Add description to transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:571 apps/transactions/models.py:795
|
#: apps/transactions/models.py:575 apps/transactions/models.py:799
|
||||||
msgid "Add notes to transactions"
|
msgid "Add notes to transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:731
|
#: apps/transactions/models.py:735
|
||||||
msgid "day(s)"
|
msgid "day(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:732
|
#: apps/transactions/models.py:736
|
||||||
msgid "week(s)"
|
msgid "week(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:733
|
#: apps/transactions/models.py:737
|
||||||
msgid "month(s)"
|
msgid "month(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:734
|
#: apps/transactions/models.py:738
|
||||||
msgid "year(s)"
|
msgid "year(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:736
|
#: apps/transactions/models.py:740
|
||||||
#: templates/recurring_transactions/fragments/list.html:24
|
#: templates/recurring_transactions/fragments/list.html:24
|
||||||
msgid "Paused"
|
msgid "Paused"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:775
|
#: apps/transactions/models.py:779
|
||||||
msgid "Recurrence Type"
|
msgid "Recurrence Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:778
|
#: apps/transactions/models.py:782
|
||||||
msgid "Recurrence Interval"
|
msgid "Recurrence Interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:781
|
#: apps/transactions/models.py:785
|
||||||
msgid "Keep at most"
|
msgid "Keep at most"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:785
|
#: apps/transactions/models.py:789
|
||||||
msgid "Last Generated Date"
|
msgid "Last Generated Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:788
|
#: apps/transactions/models.py:792
|
||||||
msgid "Last Generated Reference Date"
|
msgid "Last Generated Reference Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:1034
|
#: apps/transactions/models.py:1038
|
||||||
#: apps/transactions/views/quick_transactions.py:177
|
#: apps/transactions/views/quick_transactions.py:177
|
||||||
#: apps/transactions/views/quick_transactions.py:186
|
#: apps/transactions/views/quick_transactions.py:186
|
||||||
#: apps/transactions/views/quick_transactions.py:188
|
#: apps/transactions/views/quick_transactions.py:188
|
||||||
@@ -1609,8 +1613,8 @@ msgstr ""
|
|||||||
msgid "Quick Transaction"
|
msgid "Quick Transaction"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:1035 templates/includes/navbar.html:73
|
#: apps/transactions/models.py:1039 templates/includes/navbar.html:73
|
||||||
#: templates/includes/sidebar.html:108
|
#: templates/includes/sidebar.html:100
|
||||||
#: templates/quick_transactions/pages/index.html:5
|
#: templates/quick_transactions/pages/index.html:5
|
||||||
#: templates/quick_transactions/pages/index.html:11
|
#: templates/quick_transactions/pages/index.html:11
|
||||||
msgid "Quick Transactions"
|
msgid "Quick Transactions"
|
||||||
@@ -1925,7 +1929,7 @@ msgid "All Transactions"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
||||||
#: templates/includes/sidebar.html:73
|
#: templates/includes/sidebar.html:65
|
||||||
msgid "Calendar"
|
msgid "Calendar"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2037,6 +2041,7 @@ msgstr ""
|
|||||||
#: templates/quick_transactions/fragments/list.html:34
|
#: templates/quick_transactions/fragments/list.html:34
|
||||||
#: templates/recurring_transactions/fragments/table.html:93
|
#: templates/recurring_transactions/fragments/table.html:93
|
||||||
#: templates/rules/fragments/list.html:45
|
#: templates/rules/fragments/list.html:45
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:61
|
#: templates/rules/fragments/transaction_rule/view.html:61
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:96
|
#: templates/rules/fragments/transaction_rule/view.html:96
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:137
|
#: templates/rules/fragments/transaction_rule/view.html:137
|
||||||
@@ -2162,6 +2167,8 @@ msgid "Current balance"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/accounts/fragments/account_reconciliation.html:39
|
#: templates/accounts/fragments/account_reconciliation.html:39
|
||||||
|
#: templates/net_worth/net_worth.html:105
|
||||||
|
#: templates/net_worth/net_worth.html:362
|
||||||
msgid "Difference"
|
msgid "Difference"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2256,7 +2263,7 @@ msgid "Pick a month"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
||||||
#: templates/includes/sidebar.html:53
|
#: templates/includes/sidebar.html:45
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2537,19 +2544,19 @@ msgstr ""
|
|||||||
msgid "Amount Bought"
|
msgid "Amount Bought"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:390
|
#: templates/dca/fragments/strategy/details.html:392
|
||||||
msgid "Entry Price vs Current Price"
|
msgid "Entry Price vs Current Price"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:406
|
#: templates/dca/fragments/strategy/details.html:408
|
||||||
msgid "Days Between Investments"
|
msgid "Days Between Investments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:453
|
#: templates/dca/fragments/strategy/details.html:455
|
||||||
msgid "Investment Frequency"
|
msgid "Investment Frequency"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:455
|
#: templates/dca/fragments/strategy/details.html:457
|
||||||
msgid "The straighter the blue line, the more consistent your DCA strategy is."
|
msgid "The straighter the blue line, the more consistent your DCA strategy is."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2589,7 +2596,7 @@ msgid "Edit exchange rate"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/exchange_rates/fragments/list.html:25
|
#: templates/exchange_rates/fragments/list.html:25
|
||||||
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:93
|
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:85
|
||||||
#: templates/installment_plans/fragments/list.html:21
|
#: templates/installment_plans/fragments/list.html:21
|
||||||
#: templates/yearly_overview/pages/overview_by_account.html:105
|
#: templates/yearly_overview/pages/overview_by_account.html:105
|
||||||
#: templates/yearly_overview/pages/overview_by_currency.html:107
|
#: templates/yearly_overview/pages/overview_by_currency.html:107
|
||||||
@@ -2646,7 +2653,7 @@ msgid "No services configured"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
|
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
|
||||||
#: templates/includes/sidebar.html:247
|
#: templates/includes/sidebar.html:239
|
||||||
msgid "Export and Restore"
|
msgid "Export and Restore"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2743,72 +2750,72 @@ msgstr ""
|
|||||||
msgid "Overview"
|
msgid "Overview"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
|
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:77
|
||||||
msgid "Net Worth"
|
msgid "Net Worth"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:45
|
#: templates/includes/navbar.html:45
|
||||||
#: templates/insights/fragments/category_overview/index.html:65
|
#: templates/insights/fragments/category_overview/index.html:65
|
||||||
#: templates/net_worth/net_worth.html:22
|
#: templates/net_worth/net_worth.html:23
|
||||||
msgid "Current"
|
msgid "Current"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:79
|
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:71
|
||||||
#: templates/insights/pages/index.html:5
|
#: templates/insights/pages/index.html:5
|
||||||
msgid "Insights"
|
msgid "Insights"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
|
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:93
|
||||||
msgid "Trash Can"
|
msgid "Trash Can"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
|
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:118
|
||||||
msgid "Tools"
|
msgid "Tools"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:128
|
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:120
|
||||||
msgid "Dollar Cost Average Tracker"
|
msgid "Dollar Cost Average Tracker"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:134
|
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:126
|
||||||
#: templates/mini_tools/unit_price_calculator.html:5
|
#: templates/mini_tools/unit_price_calculator.html:5
|
||||||
#: templates/mini_tools/unit_price_calculator.html:10
|
#: templates/mini_tools/unit_price_calculator.html:10
|
||||||
msgid "Unit Price Calculator"
|
msgid "Unit Price Calculator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:140
|
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:132
|
||||||
#: templates/mini_tools/currency_converter/currency_converter.html:8
|
#: templates/mini_tools/currency_converter/currency_converter.html:8
|
||||||
#: templates/mini_tools/currency_converter/currency_converter.html:15
|
#: templates/mini_tools/currency_converter/currency_converter.html:15
|
||||||
msgid "Currency Converter"
|
msgid "Currency Converter"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
|
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:150
|
||||||
#: templates/includes/sidebar.html:171
|
#: templates/includes/sidebar.html:163
|
||||||
msgid "Management"
|
msgid "Management"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
|
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:224
|
||||||
msgid "Automation"
|
msgid "Automation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
|
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:253
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:270
|
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:262
|
||||||
msgid "Only use this if you know what you're doing"
|
msgid "Only use this if you know what you're doing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
|
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:261
|
||||||
msgid "Django Admin"
|
msgid "Django Admin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
|
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:276
|
||||||
msgid "is available"
|
msgid "is available"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
||||||
#: templates/includes/sidebar.html:290
|
#: templates/includes/sidebar.html:282
|
||||||
msgid "Calculator"
|
msgid "Calculator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3132,25 +3139,29 @@ msgstr ""
|
|||||||
msgid "Order by"
|
msgid "Order by"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:40
|
#: templates/net_worth/net_worth.html:42
|
||||||
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
||||||
msgid "By currency"
|
msgid "By currency"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:75
|
#: templates/net_worth/net_worth.html:78
|
||||||
msgid "Consolidated"
|
msgid "Consolidated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:104
|
#: templates/net_worth/net_worth.html:101
|
||||||
|
msgid "Evolution"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/net_worth/net_worth.html:128
|
||||||
#: templates/yearly_overview/pages/overview_by_account.html:7
|
#: templates/yearly_overview/pages/overview_by_account.html:7
|
||||||
msgid "By account"
|
msgid "By account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:211
|
#: templates/net_worth/net_worth.html:236
|
||||||
msgid "Evolution by currency"
|
msgid "Evolution by currency"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:275
|
#: templates/net_worth/net_worth.html:300
|
||||||
msgid "Evolution by account"
|
msgid "Evolution by account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3247,10 +3258,8 @@ msgid "Add transaction rule"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
#: templates/rules/fragments/transaction_rule/view.html:127
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
msgid "Create"
|
||||||
#: templates/rules/fragments/transaction_rule/edit.html:5
|
|
||||||
msgid "Edit transaction rule"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:8
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:8
|
||||||
@@ -3292,6 +3301,10 @@ msgstr ""
|
|||||||
msgid "No transaction found, a new one will be created"
|
msgid "No transaction found, a new one will be created"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/rules/fragments/transaction_rule/edit.html:5
|
||||||
|
msgid "Edit transaction rule"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/transaction_rule_action/add.html:5
|
#: templates/rules/fragments/transaction_rule/transaction_rule_action/add.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/update_or_create_transaction_rule_action/add.html:5
|
#: templates/rules/fragments/transaction_rule/update_or_create_transaction_rule_action/add.html:5
|
||||||
msgid "Add action to transaction rule"
|
msgid "Add action to transaction rule"
|
||||||
@@ -3322,10 +3335,6 @@ msgstr ""
|
|||||||
msgid "This rule has no actions"
|
msgid "This rule has no actions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:127
|
|
||||||
msgid "Create"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:144
|
#: templates/rules/fragments/transaction_rule/view.html:144
|
||||||
msgid "Add new"
|
msgid "Add new"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
+162
-162
@@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-07 13:08+0000\n"
|
"POT-Creation-Date: 2025-09-20 14:08+0000\n"
|
||||||
"PO-Revision-Date: 2025-09-01 06:17+0000\n"
|
"PO-Revision-Date: 2025-09-21 13:17+0000\n"
|
||||||
"Last-Translator: Dimitri Decrock <dj.flashpower@gmail.com>\n"
|
"Last-Translator: Dimitri Decrock <dj.flashpower@gmail.com>\n"
|
||||||
"Language-Team: Dutch <https://translations.herculino.com/projects/wygiwyh/"
|
"Language-Team: Dutch <https://translations.herculino.com/projects/wygiwyh/"
|
||||||
"app/nl/>\n"
|
"app/nl/>\n"
|
||||||
@@ -17,13 +17,13 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Weblate 5.13\n"
|
"X-Generator: Weblate 5.13.3\n"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:26
|
#: apps/accounts/forms.py:26
|
||||||
msgid "Group name"
|
msgid "Group name"
|
||||||
msgstr "Groepsnaam"
|
msgstr "Groepsnaam"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:42 apps/accounts/forms.py:118
|
#: apps/accounts/forms.py:42 apps/accounts/forms.py:112
|
||||||
#: apps/currencies/forms.py:55 apps/currencies/forms.py:93
|
#: 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/currencies/forms.py:146 apps/dca/forms.py:49 apps/dca/forms.py:224
|
||||||
#: apps/import_app/forms.py:34 apps/rules/forms.py:57 apps/rules/forms.py:101
|
#: apps/import_app/forms.py:34 apps/rules/forms.py:57 apps/rules/forms.py:101
|
||||||
@@ -33,11 +33,12 @@ msgstr "Groepsnaam"
|
|||||||
#: apps/transactions/forms.py:953 apps/transactions/forms.py:988
|
#: apps/transactions/forms.py:953 apps/transactions/forms.py:988
|
||||||
#: apps/transactions/forms.py:1142 apps/users/forms.py:217
|
#: apps/transactions/forms.py:1142 apps/users/forms.py:217
|
||||||
#: apps/users/forms.py:379
|
#: apps/users/forms.py:379
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:132
|
#: templates/rules/fragments/transaction_rule/view.html:132
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Bijwerken"
|
msgstr "Bijwerken"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:50 apps/accounts/forms.py:126
|
#: apps/accounts/forms.py:50 apps/accounts/forms.py:120
|
||||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
||||||
#: apps/currencies/forms.py:101 apps/currencies/forms.py:154
|
#: apps/currencies/forms.py:101 apps/currencies/forms.py:154
|
||||||
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
|
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
|
||||||
@@ -71,35 +72,35 @@ msgstr "Toevoegen"
|
|||||||
msgid "Group"
|
msgid "Group"
|
||||||
msgstr "Groep"
|
msgstr "Groep"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:135
|
#: apps/accounts/forms.py:129
|
||||||
msgid "New balance"
|
msgid "New balance"
|
||||||
msgstr "Nieuw saldo"
|
msgstr "Nieuw saldo"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:141 apps/dca/forms.py:85 apps/dca/forms.py:92
|
#: apps/accounts/forms.py:135 apps/dca/forms.py:85 apps/dca/forms.py:92
|
||||||
#: apps/insights/forms.py:118 apps/rules/forms.py:185 apps/rules/forms.py:201
|
#: apps/insights/forms.py:118 apps/rules/forms.py:185 apps/rules/forms.py:201
|
||||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:263
|
#: apps/transactions/forms.py:44 apps/transactions/forms.py:263
|
||||||
#: apps/transactions/forms.py:438 apps/transactions/forms.py:540
|
#: apps/transactions/forms.py:438 apps/transactions/forms.py:540
|
||||||
#: apps/transactions/forms.py:547 apps/transactions/forms.py:759
|
#: apps/transactions/forms.py:547 apps/transactions/forms.py:759
|
||||||
#: apps/transactions/forms.py:1020 apps/transactions/models.py:322
|
#: apps/transactions/forms.py:1020 apps/transactions/models.py:323
|
||||||
#: apps/transactions/models.py:556 apps/transactions/models.py:756
|
#: apps/transactions/models.py:560 apps/transactions/models.py:760
|
||||||
#: apps/transactions/models.py:1006
|
#: apps/transactions/models.py:1010
|
||||||
#: templates/insights/fragments/category_overview/index.html:78
|
#: templates/insights/fragments/category_overview/index.html:78
|
||||||
#: templates/insights/fragments/category_overview/index.html:530
|
#: templates/insights/fragments/category_overview/index.html:530
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr "Categorie"
|
msgstr "Categorie"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:148 apps/dca/forms.py:101 apps/dca/forms.py:109
|
#: apps/accounts/forms.py:142 apps/dca/forms.py:101 apps/dca/forms.py:109
|
||||||
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135
|
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135
|
||||||
#: apps/rules/forms.py:188 apps/rules/forms.py:198 apps/rules/models.py:45
|
#: apps/rules/forms.py:188 apps/rules/forms.py:198 apps/rules/models.py:45
|
||||||
#: apps/rules/models.py:315 apps/transactions/filters.py:69
|
#: apps/rules/models.py:315 apps/transactions/filters.py:69
|
||||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:271
|
#: apps/transactions/forms.py:52 apps/transactions/forms.py:271
|
||||||
#: apps/transactions/forms.py:446 apps/transactions/forms.py:556
|
#: apps/transactions/forms.py:446 apps/transactions/forms.py:556
|
||||||
#: apps/transactions/forms.py:564 apps/transactions/forms.py:752
|
#: apps/transactions/forms.py:564 apps/transactions/forms.py:752
|
||||||
#: apps/transactions/forms.py:1013 apps/transactions/models.py:328
|
#: apps/transactions/forms.py:1013 apps/transactions/models.py:329
|
||||||
#: apps/transactions/models.py:558 apps/transactions/models.py:760
|
#: apps/transactions/models.py:562 apps/transactions/models.py:764
|
||||||
#: apps/transactions/models.py:1012 templates/includes/navbar.html:111
|
#: apps/transactions/models.py:1016 templates/includes/navbar.html:111
|
||||||
#: templates/includes/sidebar.html:192
|
#: templates/includes/sidebar.html:184
|
||||||
#: templates/insights/fragments/category_overview/index.html:36
|
#: templates/insights/fragments/category_overview/index.html:36
|
||||||
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
@@ -107,8 +108,8 @@ msgstr "Labels"
|
|||||||
|
|
||||||
#: apps/accounts/models.py:12 apps/accounts/models.py:29 apps/dca/models.py:13
|
#: apps/accounts/models.py:12 apps/accounts/models.py:29 apps/dca/models.py:13
|
||||||
#: apps/import_app/models.py:14 apps/rules/models.py:13
|
#: apps/import_app/models.py:14 apps/rules/models.py:13
|
||||||
#: apps/transactions/models.py:214 apps/transactions/models.py:239
|
#: apps/transactions/models.py:215 apps/transactions/models.py:240
|
||||||
#: apps/transactions/models.py:263 apps/transactions/models.py:974
|
#: apps/transactions/models.py:264 apps/transactions/models.py:978
|
||||||
#: templates/account_groups/fragments/list.html:25
|
#: templates/account_groups/fragments/list.html:25
|
||||||
#: templates/accounts/fragments/list.html:25
|
#: templates/accounts/fragments/list.html:25
|
||||||
#: templates/categories/fragments/table.html:16
|
#: templates/categories/fragments/table.html:16
|
||||||
@@ -131,7 +132,7 @@ msgstr "Accountgroep"
|
|||||||
|
|
||||||
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
||||||
#: templates/account_groups/pages/index.html:4
|
#: templates/account_groups/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:212
|
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:204
|
||||||
msgid "Account Groups"
|
msgid "Account Groups"
|
||||||
msgstr "Accountgroepen"
|
msgstr "Accountgroepen"
|
||||||
|
|
||||||
@@ -181,9 +182,9 @@ msgstr ""
|
|||||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:283
|
#: apps/transactions/forms.py:64 apps/transactions/forms.py:283
|
||||||
#: apps/transactions/forms.py:405 apps/transactions/forms.py:744
|
#: apps/transactions/forms.py:405 apps/transactions/forms.py:744
|
||||||
#: apps/transactions/forms.py:1005 apps/transactions/models.py:294
|
#: apps/transactions/forms.py:1005 apps/transactions/models.py:295
|
||||||
#: apps/transactions/models.py:516 apps/transactions/models.py:738
|
#: apps/transactions/models.py:520 apps/transactions/models.py:742
|
||||||
#: apps/transactions/models.py:980
|
#: apps/transactions/models.py:984
|
||||||
#: templates/installment_plans/fragments/table.html:17
|
#: templates/installment_plans/fragments/table.html:17
|
||||||
#: templates/quick_transactions/fragments/list.html:14
|
#: templates/quick_transactions/fragments/list.html:14
|
||||||
#: templates/recurring_transactions/fragments/table.html:19
|
#: templates/recurring_transactions/fragments/table.html:19
|
||||||
@@ -196,8 +197,8 @@ msgstr "Rekening"
|
|||||||
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
||||||
#: templates/accounts/fragments/list.html:5
|
#: templates/accounts/fragments/list.html:5
|
||||||
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
||||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
|
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:196
|
||||||
#: templates/includes/sidebar.html:206
|
#: templates/includes/sidebar.html:198
|
||||||
#: templates/monthly_overview/pages/overview.html:94
|
#: templates/monthly_overview/pages/overview.html:94
|
||||||
#: templates/transactions/fragments/summary.html:12
|
#: templates/transactions/fragments/summary.html:12
|
||||||
#: templates/transactions/pages/transactions.html:137
|
#: templates/transactions/pages/transactions.html:137
|
||||||
@@ -506,7 +507,7 @@ msgstr "Achtervoegsel"
|
|||||||
#: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:180
|
#: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:180
|
||||||
#: apps/rules/forms.py:194 apps/rules/models.py:38 apps/rules/models.py:279
|
#: apps/rules/forms.py:194 apps/rules/models.py:38 apps/rules/models.py:279
|
||||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:410
|
#: apps/transactions/forms.py:68 apps/transactions/forms.py:410
|
||||||
#: apps/transactions/forms.py:568 apps/transactions/models.py:304
|
#: apps/transactions/forms.py:568 apps/transactions/models.py:305
|
||||||
#: templates/dca/fragments/strategy/details.html:52
|
#: templates/dca/fragments/strategy/details.html:52
|
||||||
#: templates/exchange_rates/fragments/table.html:10
|
#: templates/exchange_rates/fragments/table.html:10
|
||||||
#: templates/exchange_rates_services/fragments/table.html:10
|
#: templates/exchange_rates_services/fragments/table.html:10
|
||||||
@@ -529,8 +530,8 @@ msgstr "Cijfers na de komma"
|
|||||||
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60
|
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60
|
||||||
#: templates/currencies/fragments/list.html:5
|
#: templates/currencies/fragments/list.html:5
|
||||||
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
||||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
|
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:210
|
||||||
#: templates/includes/sidebar.html:220
|
#: templates/includes/sidebar.html:212
|
||||||
#: templates/monthly_overview/pages/overview.html:81
|
#: templates/monthly_overview/pages/overview.html:81
|
||||||
#: templates/transactions/fragments/summary.html:8
|
#: templates/transactions/fragments/summary.html:8
|
||||||
#: templates/transactions/pages/transactions.html:124
|
#: templates/transactions/pages/transactions.html:124
|
||||||
@@ -565,7 +566,7 @@ msgstr "Automatisch"
|
|||||||
#: apps/currencies/models.py:82 apps/export_app/forms.py:68
|
#: apps/currencies/models.py:82 apps/export_app/forms.py:68
|
||||||
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
|
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
|
||||||
#: templates/exchange_rates/pages/index.html:4
|
#: templates/exchange_rates/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:226
|
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:218
|
||||||
msgid "Exchange Rates"
|
msgid "Exchange Rates"
|
||||||
msgstr "Wisselkoersen"
|
msgstr "Wisselkoersen"
|
||||||
|
|
||||||
@@ -593,8 +594,8 @@ msgstr "Dienstnaam"
|
|||||||
msgid "Service Type"
|
msgid "Service Type"
|
||||||
msgstr "Soort Dienst"
|
msgstr "Soort Dienst"
|
||||||
|
|
||||||
#: apps/currencies/models.py:118 apps/transactions/models.py:218
|
#: apps/currencies/models.py:118 apps/transactions/models.py:219
|
||||||
#: apps/transactions/models.py:242 apps/transactions/models.py:266
|
#: apps/transactions/models.py:243 apps/transactions/models.py:267
|
||||||
#: templates/categories/fragments/list.html:21
|
#: templates/categories/fragments/list.html:21
|
||||||
#: templates/entities/fragments/list.html:21
|
#: templates/entities/fragments/list.html:21
|
||||||
#: templates/recurring_transactions/fragments/list.html:21
|
#: templates/recurring_transactions/fragments/list.html:21
|
||||||
@@ -783,8 +784,8 @@ msgstr "Betaal Munteenheid"
|
|||||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:184
|
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:184
|
||||||
#: apps/rules/forms.py:200 apps/rules/models.py:43 apps/rules/models.py:295
|
#: apps/rules/forms.py:200 apps/rules/models.py:43 apps/rules/models.py:295
|
||||||
#: apps/transactions/forms.py:432 apps/transactions/forms.py:584
|
#: apps/transactions/forms.py:432 apps/transactions/forms.py:584
|
||||||
#: apps/transactions/models.py:318 apps/transactions/models.py:565
|
#: apps/transactions/models.py:319 apps/transactions/models.py:569
|
||||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1002
|
#: apps/transactions/models.py:770 apps/transactions/models.py:1006
|
||||||
msgid "Notes"
|
msgid "Notes"
|
||||||
msgstr "Opmerkingen"
|
msgstr "Opmerkingen"
|
||||||
|
|
||||||
@@ -841,15 +842,15 @@ msgid "Entry deleted successfully"
|
|||||||
msgstr "Invoer succesvol verwijderd"
|
msgstr "Invoer succesvol verwijderd"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131
|
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131
|
||||||
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:263
|
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:255
|
||||||
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
|
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "Gebruikers"
|
msgstr "Gebruikers"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
||||||
#: apps/transactions/models.py:379 templates/includes/navbar.html:58
|
#: apps/transactions/models.py:380 templates/includes/navbar.html:58
|
||||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
|
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:83
|
||||||
#: templates/includes/sidebar.html:184
|
#: templates/includes/sidebar.html:176
|
||||||
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
||||||
#: templates/recurring_transactions/fragments/table.html:39
|
#: templates/recurring_transactions/fragments/table.html:39
|
||||||
#: templates/transactions/pages/transactions.html:5
|
#: templates/transactions/pages/transactions.html:5
|
||||||
@@ -859,7 +860,7 @@ msgstr "Verrichtingen"
|
|||||||
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134
|
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134
|
||||||
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
||||||
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
||||||
#: templates/includes/sidebar.html:186
|
#: templates/includes/sidebar.html:178
|
||||||
msgid "Categories"
|
msgid "Categories"
|
||||||
msgstr "Categorieën"
|
msgstr "Categorieën"
|
||||||
|
|
||||||
@@ -868,27 +869,27 @@ msgstr "Categorieën"
|
|||||||
#: apps/rules/models.py:307 apps/transactions/filters.py:74
|
#: apps/rules/models.py:307 apps/transactions/filters.py:74
|
||||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:279
|
#: apps/transactions/forms.py:60 apps/transactions/forms.py:279
|
||||||
#: apps/transactions/forms.py:454 apps/transactions/forms.py:767
|
#: apps/transactions/forms.py:454 apps/transactions/forms.py:767
|
||||||
#: apps/transactions/forms.py:1028 apps/transactions/models.py:277
|
#: apps/transactions/forms.py:1028 apps/transactions/models.py:278
|
||||||
#: apps/transactions/models.py:333 apps/transactions/models.py:561
|
#: apps/transactions/models.py:334 apps/transactions/models.py:565
|
||||||
#: apps/transactions/models.py:763 apps/transactions/models.py:1017
|
#: apps/transactions/models.py:767 apps/transactions/models.py:1021
|
||||||
#: templates/entities/fragments/list.html:5
|
#: templates/entities/fragments/list.html:5
|
||||||
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
|
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
|
||||||
#: templates/includes/sidebar.html:198
|
#: templates/includes/sidebar.html:190
|
||||||
#: templates/insights/fragments/category_overview/index.html:49
|
#: templates/insights/fragments/category_overview/index.html:49
|
||||||
msgid "Entities"
|
msgid "Entities"
|
||||||
msgstr "Bedrijven"
|
msgstr "Bedrijven"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
||||||
#: apps/transactions/models.py:803 templates/includes/navbar.html:77
|
#: apps/transactions/models.py:807 templates/includes/navbar.html:77
|
||||||
#: templates/includes/sidebar.html:120
|
#: templates/includes/sidebar.html:112
|
||||||
#: templates/recurring_transactions/fragments/list.html:5
|
#: templates/recurring_transactions/fragments/list.html:5
|
||||||
#: templates/recurring_transactions/pages/index.html:4
|
#: templates/recurring_transactions/pages/index.html:4
|
||||||
msgid "Recurring Transactions"
|
msgid "Recurring Transactions"
|
||||||
msgstr "Terugkerende Verrichtingen"
|
msgstr "Terugkerende Verrichtingen"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
||||||
#: apps/transactions/models.py:579 templates/includes/navbar.html:75
|
#: apps/transactions/models.py:583 templates/includes/navbar.html:75
|
||||||
#: templates/includes/sidebar.html:114
|
#: templates/includes/sidebar.html:106
|
||||||
#: templates/installment_plans/fragments/list.html:5
|
#: templates/installment_plans/fragments/list.html:5
|
||||||
#: templates/installment_plans/pages/index.html:4
|
#: templates/installment_plans/pages/index.html:4
|
||||||
msgid "Installment Plans"
|
msgid "Installment Plans"
|
||||||
@@ -897,12 +898,12 @@ msgstr "Afbetalingsplannen"
|
|||||||
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
||||||
#: templates/exchange_rates_services/fragments/list.html:6
|
#: templates/exchange_rates_services/fragments/list.html:6
|
||||||
#: templates/exchange_rates_services/pages/index.html:4
|
#: templates/exchange_rates_services/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:254
|
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:246
|
||||||
msgid "Automatic Exchange Rates"
|
msgid "Automatic Exchange Rates"
|
||||||
msgstr "Automatische Wisselkoersen"
|
msgstr "Automatische Wisselkoersen"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135
|
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135
|
||||||
#: templates/includes/sidebar.html:234 templates/rules/fragments/list.html:5
|
#: templates/includes/sidebar.html:226 templates/rules/fragments/list.html:5
|
||||||
#: templates/rules/pages/index.html:4
|
#: templates/rules/pages/index.html:4
|
||||||
msgid "Rules"
|
msgid "Rules"
|
||||||
msgstr "Regels"
|
msgstr "Regels"
|
||||||
@@ -974,7 +975,7 @@ msgstr "Selecteer een bestand"
|
|||||||
|
|
||||||
#: apps/import_app/forms.py:61
|
#: apps/import_app/forms.py:61
|
||||||
#: templates/import_app/fragments/profiles/list.html:62
|
#: templates/import_app/fragments/profiles/list.html:62
|
||||||
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:240
|
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:232
|
||||||
msgid "Import"
|
msgid "Import"
|
||||||
msgstr "Importeer"
|
msgstr "Importeer"
|
||||||
|
|
||||||
@@ -1135,15 +1136,15 @@ msgstr "Operator"
|
|||||||
|
|
||||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:36
|
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:36
|
||||||
#: apps/rules/models.py:271 apps/transactions/forms.py:396
|
#: apps/rules/models.py:271 apps/transactions/forms.py:396
|
||||||
#: apps/transactions/models.py:301 apps/transactions/models.py:521
|
#: apps/transactions/models.py:302 apps/transactions/models.py:525
|
||||||
#: apps/transactions/models.py:744 apps/transactions/models.py:987
|
#: apps/transactions/models.py:748 apps/transactions/models.py:991
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr "Soort"
|
msgstr "Soort"
|
||||||
|
|
||||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:37
|
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:37
|
||||||
#: apps/rules/models.py:275 apps/transactions/filters.py:23
|
#: apps/rules/models.py:275 apps/transactions/filters.py:23
|
||||||
#: apps/transactions/forms.py:400 apps/transactions/models.py:303
|
#: apps/transactions/forms.py:400 apps/transactions/models.py:304
|
||||||
#: apps/transactions/models.py:989 templates/cotton/transaction/item.html:21
|
#: apps/transactions/models.py:993 templates/cotton/transaction/item.html:21
|
||||||
#: templates/cotton/transaction/item.html:32
|
#: templates/cotton/transaction/item.html:32
|
||||||
#: templates/transactions/widgets/paid_toggle_button.html:12
|
#: templates/transactions/widgets/paid_toggle_button.html:12
|
||||||
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:16
|
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:16
|
||||||
@@ -1153,15 +1154,15 @@ msgstr "Betaald"
|
|||||||
#: apps/rules/forms.py:181 apps/rules/forms.py:195 apps/rules/models.py:39
|
#: apps/rules/forms.py:181 apps/rules/forms.py:195 apps/rules/models.py:39
|
||||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||||
#: apps/transactions/forms.py:416 apps/transactions/forms.py:571
|
#: apps/transactions/forms.py:416 apps/transactions/forms.py:571
|
||||||
#: apps/transactions/forms.py:773 apps/transactions/models.py:305
|
#: apps/transactions/forms.py:773 apps/transactions/models.py:306
|
||||||
#: apps/transactions/models.py:539 apps/transactions/models.py:768
|
#: apps/transactions/models.py:543 apps/transactions/models.py:772
|
||||||
msgid "Reference Date"
|
msgid "Reference Date"
|
||||||
msgstr "Referentiedatum"
|
msgstr "Referentiedatum"
|
||||||
|
|
||||||
#: apps/rules/forms.py:182 apps/rules/forms.py:196 apps/rules/models.py:41
|
#: apps/rules/forms.py:182 apps/rules/forms.py:196 apps/rules/models.py:41
|
||||||
#: apps/rules/models.py:287 apps/transactions/forms.py:423
|
#: apps/rules/models.py:287 apps/transactions/forms.py:423
|
||||||
#: apps/transactions/models.py:311 apps/transactions/models.py:749
|
#: apps/transactions/models.py:312 apps/transactions/models.py:753
|
||||||
#: apps/transactions/models.py:995 templates/insights/fragments/sankey.html:95
|
#: apps/transactions/models.py:999 templates/insights/fragments/sankey.html:95
|
||||||
#: templates/installment_plans/fragments/table.html:18
|
#: templates/installment_plans/fragments/table.html:18
|
||||||
#: templates/quick_transactions/fragments/list.html:15
|
#: templates/quick_transactions/fragments/list.html:15
|
||||||
#: templates/recurring_transactions/fragments/table.html:20
|
#: templates/recurring_transactions/fragments/table.html:20
|
||||||
@@ -1171,27 +1172,27 @@ msgstr "Bedrag"
|
|||||||
#: apps/rules/forms.py:183 apps/rules/forms.py:197 apps/rules/models.py:14
|
#: apps/rules/forms.py:183 apps/rules/forms.py:197 apps/rules/models.py:14
|
||||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:575
|
#: apps/transactions/forms.py:427 apps/transactions/forms.py:575
|
||||||
#: apps/transactions/models.py:316 apps/transactions/models.py:523
|
#: apps/transactions/models.py:317 apps/transactions/models.py:527
|
||||||
#: apps/transactions/models.py:752 apps/transactions/models.py:1000
|
#: apps/transactions/models.py:756 apps/transactions/models.py:1004
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Beschrijving"
|
msgstr "Beschrijving"
|
||||||
|
|
||||||
#: apps/rules/forms.py:186 apps/rules/forms.py:202 apps/rules/models.py:47
|
#: apps/rules/forms.py:186 apps/rules/forms.py:202 apps/rules/models.py:47
|
||||||
#: apps/rules/models.py:299 apps/transactions/models.py:355
|
#: apps/rules/models.py:299 apps/transactions/models.py:356
|
||||||
#: apps/transactions/models.py:1022
|
#: apps/transactions/models.py:1026
|
||||||
msgid "Internal Note"
|
msgid "Internal Note"
|
||||||
msgstr "Interne opmerking"
|
msgstr "Interne opmerking"
|
||||||
|
|
||||||
#: apps/rules/forms.py:187 apps/rules/forms.py:203 apps/rules/models.py:48
|
#: apps/rules/forms.py:187 apps/rules/forms.py:203 apps/rules/models.py:48
|
||||||
#: apps/rules/models.py:303 apps/transactions/models.py:357
|
#: apps/rules/models.py:303 apps/transactions/models.py:358
|
||||||
#: apps/transactions/models.py:1024
|
#: apps/transactions/models.py:1028
|
||||||
msgid "Internal ID"
|
msgid "Internal ID"
|
||||||
msgstr "Interne ID"
|
msgstr "Interne ID"
|
||||||
|
|
||||||
#: apps/rules/forms.py:190 apps/rules/forms.py:204 apps/rules/models.py:40
|
#: apps/rules/forms.py:190 apps/rules/forms.py:204 apps/rules/models.py:40
|
||||||
#: apps/rules/models.py:319 apps/transactions/forms.py:588
|
#: apps/rules/models.py:319 apps/transactions/forms.py:588
|
||||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
#: apps/transactions/models.py:216 apps/transactions/models.py:307
|
||||||
#: apps/transactions/models.py:990
|
#: apps/transactions/models.py:994
|
||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "Dempen"
|
msgstr "Dempen"
|
||||||
|
|
||||||
@@ -1204,31 +1205,29 @@ msgid "Set Values"
|
|||||||
msgstr "Waarden Instellen"
|
msgstr "Waarden Instellen"
|
||||||
|
|
||||||
#: apps/rules/forms.py:415 apps/rules/forms.py:452 apps/rules/forms.py:489
|
#: apps/rules/forms.py:415 apps/rules/forms.py:452 apps/rules/forms.py:489
|
||||||
#: apps/transactions/models.py:378
|
#: apps/transactions/models.py:379
|
||||||
msgid "Transaction"
|
msgid "Transaction"
|
||||||
msgstr "Verrichting"
|
msgstr "Verrichting"
|
||||||
|
|
||||||
#: apps/rules/forms.py:419 apps/rules/forms.py:456 apps/rules/forms.py:493
|
#: apps/rules/forms.py:419 apps/rules/forms.py:456 apps/rules/forms.py:493
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Type to search for a transaction to link to this entry"
|
|
||||||
msgid "Type to search for a transaction"
|
msgid "Type to search for a transaction"
|
||||||
msgstr ""
|
msgstr "Type om een transactie te zoeken"
|
||||||
"Type om een transactie te zoeken die aan dit item moet worden gekoppeld"
|
|
||||||
|
|
||||||
#: apps/rules/forms.py:431 apps/rules/forms.py:468 apps/rules/forms.py:504
|
#: apps/rules/forms.py:431 apps/rules/forms.py:468 apps/rules/forms.py:504
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:121
|
#: templates/rules/fragments/transaction_rule/view.html:121
|
||||||
msgid "Test"
|
msgid "Test"
|
||||||
msgstr ""
|
msgstr "Test"
|
||||||
|
|
||||||
#: apps/rules/models.py:15
|
#: apps/rules/models.py:15
|
||||||
msgid "Trigger"
|
msgid "Trigger"
|
||||||
msgstr "Trigger"
|
msgstr "Trigger"
|
||||||
|
|
||||||
#: apps/rules/models.py:17
|
#: apps/rules/models.py:17
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Recurrence"
|
|
||||||
msgid "Sequenced"
|
msgid "Sequenced"
|
||||||
msgstr "Terugkeerpatroon"
|
msgstr "Opeenvolgend"
|
||||||
|
|
||||||
#: apps/rules/models.py:26
|
#: apps/rules/models.py:26
|
||||||
msgid "Transaction rule"
|
msgid "Transaction rule"
|
||||||
@@ -1345,7 +1344,7 @@ msgstr "Verrichting Bijwerken Of Maken succesvol verwijderd"
|
|||||||
#: apps/transactions/filters.py:24 templates/cotton/transaction/item.html:21
|
#: apps/transactions/filters.py:24 templates/cotton/transaction/item.html:21
|
||||||
#: templates/cotton/transaction/item.html:32 templates/includes/navbar.html:47
|
#: templates/cotton/transaction/item.html:32 templates/includes/navbar.html:47
|
||||||
#: templates/insights/fragments/category_overview/index.html:61
|
#: templates/insights/fragments/category_overview/index.html:61
|
||||||
#: templates/net_worth/net_worth.html:32
|
#: templates/net_worth/net_worth.html:33
|
||||||
#: templates/transactions/widgets/paid_toggle_button.html:8
|
#: templates/transactions/widgets/paid_toggle_button.html:8
|
||||||
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:12
|
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:12
|
||||||
msgid "Projected"
|
msgid "Projected"
|
||||||
@@ -1455,7 +1454,7 @@ msgstr "toekomstige verrichtingen"
|
|||||||
msgid "End date should be after the start date"
|
msgid "End date should be after the start date"
|
||||||
msgstr "De einddatum moet na de begindatum vallen"
|
msgstr "De einddatum moet na de begindatum vallen"
|
||||||
|
|
||||||
#: apps/transactions/models.py:220
|
#: apps/transactions/models.py:221
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated categories won't be able to be selected when creating new "
|
"Deactivated categories won't be able to be selected when creating new "
|
||||||
"transactions"
|
"transactions"
|
||||||
@@ -1463,26 +1462,26 @@ msgstr ""
|
|||||||
"Gedeactiveerde categorieën kunnen niet worden geselecteerd bij het maken van "
|
"Gedeactiveerde categorieën kunnen niet worden geselecteerd bij het maken van "
|
||||||
"nieuwe transacties"
|
"nieuwe transacties"
|
||||||
|
|
||||||
#: apps/transactions/models.py:228
|
#: apps/transactions/models.py:229
|
||||||
msgid "Transaction Category"
|
msgid "Transaction Category"
|
||||||
msgstr "Transactie categorie"
|
msgstr "Transactie categorie"
|
||||||
|
|
||||||
#: apps/transactions/models.py:229
|
#: apps/transactions/models.py:230
|
||||||
msgid "Transaction Categories"
|
msgid "Transaction Categories"
|
||||||
msgstr "Transactie categorieën"
|
msgstr "Transactie categorieën"
|
||||||
|
|
||||||
#: apps/transactions/models.py:244
|
#: apps/transactions/models.py:245
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated tags won't be able to be selected when creating new transactions"
|
"Deactivated tags won't be able to be selected when creating new transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Gedeactiveerde labels kunnen niet worden geselecteerd bij het maken van "
|
"Gedeactiveerde labels kunnen niet worden geselecteerd bij het maken van "
|
||||||
"nieuwe verrichtingen"
|
"nieuwe verrichtingen"
|
||||||
|
|
||||||
#: apps/transactions/models.py:252 apps/transactions/models.py:253
|
#: apps/transactions/models.py:253 apps/transactions/models.py:254
|
||||||
msgid "Transaction Tags"
|
msgid "Transaction Tags"
|
||||||
msgstr "Verrichting Labels"
|
msgstr "Verrichting Labels"
|
||||||
|
|
||||||
#: apps/transactions/models.py:268
|
#: apps/transactions/models.py:269
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated entities won't be able to be selected when creating new "
|
"Deactivated entities won't be able to be selected when creating new "
|
||||||
"transactions"
|
"transactions"
|
||||||
@@ -1490,11 +1489,11 @@ msgstr ""
|
|||||||
"Gedeactiveerde bedrijven kunnen niet worden geselecteerd bij het maken van "
|
"Gedeactiveerde bedrijven kunnen niet worden geselecteerd bij het maken van "
|
||||||
"nieuwe verrichtingen"
|
"nieuwe verrichtingen"
|
||||||
|
|
||||||
#: apps/transactions/models.py:276
|
#: apps/transactions/models.py:277
|
||||||
msgid "Entity"
|
msgid "Entity"
|
||||||
msgstr "Bedrijf"
|
msgstr "Bedrijf"
|
||||||
|
|
||||||
#: apps/transactions/models.py:288 apps/transactions/models.py:967
|
#: apps/transactions/models.py:289 apps/transactions/models.py:971
|
||||||
#: templates/calendar_view/fragments/list.html:42
|
#: templates/calendar_view/fragments/list.html:42
|
||||||
#: templates/calendar_view/fragments/list.html:44
|
#: templates/calendar_view/fragments/list.html:44
|
||||||
#: templates/calendar_view/fragments/list.html:52
|
#: templates/calendar_view/fragments/list.html:52
|
||||||
@@ -1506,7 +1505,7 @@ msgstr "Bedrijf"
|
|||||||
msgid "Income"
|
msgid "Income"
|
||||||
msgstr "Ontvangsten Transactie"
|
msgstr "Ontvangsten Transactie"
|
||||||
|
|
||||||
#: apps/transactions/models.py:289 apps/transactions/models.py:968
|
#: apps/transactions/models.py:290 apps/transactions/models.py:972
|
||||||
#: templates/calendar_view/fragments/list.html:46
|
#: templates/calendar_view/fragments/list.html:46
|
||||||
#: templates/calendar_view/fragments/list.html:48
|
#: templates/calendar_view/fragments/list.html:48
|
||||||
#: templates/calendar_view/fragments/list.html:56
|
#: templates/calendar_view/fragments/list.html:56
|
||||||
@@ -1517,129 +1516,129 @@ msgstr "Ontvangsten Transactie"
|
|||||||
msgid "Expense"
|
msgid "Expense"
|
||||||
msgstr "Uitgave"
|
msgstr "Uitgave"
|
||||||
|
|
||||||
#: apps/transactions/models.py:344 apps/transactions/models.py:578
|
#: apps/transactions/models.py:345 apps/transactions/models.py:582
|
||||||
msgid "Installment Plan"
|
msgid "Installment Plan"
|
||||||
msgstr "Afbetalingsplan"
|
msgstr "Afbetalingsplan"
|
||||||
|
|
||||||
#: apps/transactions/models.py:353 apps/transactions/models.py:802
|
#: apps/transactions/models.py:354 apps/transactions/models.py:806
|
||||||
msgid "Recurring Transaction"
|
msgid "Recurring Transaction"
|
||||||
msgstr "Terugkerende verrichting"
|
msgstr "Terugkerende verrichting"
|
||||||
|
|
||||||
#: apps/transactions/models.py:361
|
#: apps/transactions/models.py:362
|
||||||
msgid "Deleted"
|
msgid "Deleted"
|
||||||
msgstr "Verwijderd"
|
msgstr "Verwijderd"
|
||||||
|
|
||||||
#: apps/transactions/models.py:366
|
#: apps/transactions/models.py:367
|
||||||
msgid "Deleted At"
|
msgid "Deleted At"
|
||||||
msgstr "Verwijderd Op"
|
msgstr "Verwijderd Op"
|
||||||
|
|
||||||
#: apps/transactions/models.py:458 templates/tags/fragments/table.html:71
|
#: apps/transactions/models.py:462 templates/tags/fragments/table.html:71
|
||||||
msgid "No tags"
|
msgid "No tags"
|
||||||
msgstr "Geen labels"
|
msgstr "Geen labels"
|
||||||
|
|
||||||
#: apps/transactions/models.py:460
|
#: apps/transactions/models.py:464
|
||||||
msgid "No category"
|
msgid "No category"
|
||||||
msgstr "Geen categorie"
|
msgstr "Geen categorie"
|
||||||
|
|
||||||
#: apps/transactions/models.py:462
|
#: apps/transactions/models.py:466
|
||||||
msgid "No description"
|
msgid "No description"
|
||||||
msgstr "Geen Beschrijving"
|
msgstr "Geen Beschrijving"
|
||||||
|
|
||||||
#: apps/transactions/models.py:510 templates/includes/sidebar.html:67
|
#: apps/transactions/models.py:514 templates/includes/sidebar.html:59
|
||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr "Jaarlijks"
|
msgstr "Jaarlijks"
|
||||||
|
|
||||||
#: apps/transactions/models.py:511 apps/users/models.py:464
|
#: apps/transactions/models.py:515 apps/users/models.py:464
|
||||||
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:61
|
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:53
|
||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr "Maandelijks"
|
msgstr "Maandelijks"
|
||||||
|
|
||||||
#: apps/transactions/models.py:512
|
#: apps/transactions/models.py:516
|
||||||
msgid "Weekly"
|
msgid "Weekly"
|
||||||
msgstr "Wekelijks"
|
msgstr "Wekelijks"
|
||||||
|
|
||||||
#: apps/transactions/models.py:513
|
#: apps/transactions/models.py:517
|
||||||
msgid "Daily"
|
msgid "Daily"
|
||||||
msgstr "Dagelijks"
|
msgstr "Dagelijks"
|
||||||
|
|
||||||
#: apps/transactions/models.py:526
|
#: apps/transactions/models.py:530
|
||||||
msgid "Number of Installments"
|
msgid "Number of Installments"
|
||||||
msgstr "Aantal aflossingen"
|
msgstr "Aantal aflossingen"
|
||||||
|
|
||||||
#: apps/transactions/models.py:531
|
#: apps/transactions/models.py:535
|
||||||
msgid "Installment Start"
|
msgid "Installment Start"
|
||||||
msgstr "Begin afbetaling"
|
msgstr "Begin afbetaling"
|
||||||
|
|
||||||
#: apps/transactions/models.py:532
|
#: apps/transactions/models.py:536
|
||||||
msgid "The installment number to start counting from"
|
msgid "The installment number to start counting from"
|
||||||
msgstr "Het nummer van de aflevering om mee te beginnen"
|
msgstr "Het nummer van de aflevering om mee te beginnen"
|
||||||
|
|
||||||
#: apps/transactions/models.py:537 apps/transactions/models.py:772
|
#: apps/transactions/models.py:541 apps/transactions/models.py:776
|
||||||
msgid "Start Date"
|
msgid "Start Date"
|
||||||
msgstr "Startdatum"
|
msgstr "Startdatum"
|
||||||
|
|
||||||
#: apps/transactions/models.py:541 apps/transactions/models.py:773
|
#: apps/transactions/models.py:545 apps/transactions/models.py:777
|
||||||
msgid "End Date"
|
msgid "End Date"
|
||||||
msgstr "Einddatum"
|
msgstr "Einddatum"
|
||||||
|
|
||||||
#: apps/transactions/models.py:546
|
#: apps/transactions/models.py:550
|
||||||
msgid "Recurrence"
|
msgid "Recurrence"
|
||||||
msgstr "Terugkeerpatroon"
|
msgstr "Terugkeerpatroon"
|
||||||
|
|
||||||
#: apps/transactions/models.py:549
|
#: apps/transactions/models.py:553
|
||||||
msgid "Installment Amount"
|
msgid "Installment Amount"
|
||||||
msgstr "Termijnbedrag"
|
msgstr "Termijnbedrag"
|
||||||
|
|
||||||
#: apps/transactions/models.py:568 apps/transactions/models.py:792
|
#: apps/transactions/models.py:572 apps/transactions/models.py:796
|
||||||
msgid "Add description to transactions"
|
msgid "Add description to transactions"
|
||||||
msgstr "Beschrijving toevoegen aan verrichting"
|
msgstr "Beschrijving toevoegen aan verrichting"
|
||||||
|
|
||||||
#: apps/transactions/models.py:571 apps/transactions/models.py:795
|
#: apps/transactions/models.py:575 apps/transactions/models.py:799
|
||||||
msgid "Add notes to transactions"
|
msgid "Add notes to transactions"
|
||||||
msgstr "Notities toevoegen aan verrichting"
|
msgstr "Notities toevoegen aan verrichting"
|
||||||
|
|
||||||
#: apps/transactions/models.py:731
|
#: apps/transactions/models.py:735
|
||||||
msgid "day(s)"
|
msgid "day(s)"
|
||||||
msgstr "dag(en)"
|
msgstr "dag(en)"
|
||||||
|
|
||||||
#: apps/transactions/models.py:732
|
#: apps/transactions/models.py:736
|
||||||
msgid "week(s)"
|
msgid "week(s)"
|
||||||
msgstr "we(e)k(en)"
|
msgstr "we(e)k(en)"
|
||||||
|
|
||||||
#: apps/transactions/models.py:733
|
#: apps/transactions/models.py:737
|
||||||
msgid "month(s)"
|
msgid "month(s)"
|
||||||
msgstr "maand(en)"
|
msgstr "maand(en)"
|
||||||
|
|
||||||
#: apps/transactions/models.py:734
|
#: apps/transactions/models.py:738
|
||||||
msgid "year(s)"
|
msgid "year(s)"
|
||||||
msgstr "ja(a)r(en)"
|
msgstr "ja(a)r(en)"
|
||||||
|
|
||||||
#: apps/transactions/models.py:736
|
#: apps/transactions/models.py:740
|
||||||
#: templates/recurring_transactions/fragments/list.html:24
|
#: templates/recurring_transactions/fragments/list.html:24
|
||||||
msgid "Paused"
|
msgid "Paused"
|
||||||
msgstr "Gepauzeerd"
|
msgstr "Gepauzeerd"
|
||||||
|
|
||||||
#: apps/transactions/models.py:775
|
#: apps/transactions/models.py:779
|
||||||
msgid "Recurrence Type"
|
msgid "Recurrence Type"
|
||||||
msgstr "Type Terugkeerpatroon"
|
msgstr "Type Terugkeerpatroon"
|
||||||
|
|
||||||
#: apps/transactions/models.py:778
|
#: apps/transactions/models.py:782
|
||||||
msgid "Recurrence Interval"
|
msgid "Recurrence Interval"
|
||||||
msgstr "Terugkeer Interval"
|
msgstr "Terugkeer Interval"
|
||||||
|
|
||||||
#: apps/transactions/models.py:781
|
#: apps/transactions/models.py:785
|
||||||
msgid "Keep at most"
|
msgid "Keep at most"
|
||||||
msgstr "Bewaar maximaal"
|
msgstr "Bewaar maximaal"
|
||||||
|
|
||||||
#: apps/transactions/models.py:785
|
#: apps/transactions/models.py:789
|
||||||
msgid "Last Generated Date"
|
msgid "Last Generated Date"
|
||||||
msgstr "Laatste Gegenereerde Datum"
|
msgstr "Laatste Gegenereerde Datum"
|
||||||
|
|
||||||
#: apps/transactions/models.py:788
|
#: apps/transactions/models.py:792
|
||||||
msgid "Last Generated Reference Date"
|
msgid "Last Generated Reference Date"
|
||||||
msgstr "Laatste Gegenereerde Referentiedatum"
|
msgstr "Laatste Gegenereerde Referentiedatum"
|
||||||
|
|
||||||
#: apps/transactions/models.py:1034
|
#: apps/transactions/models.py:1038
|
||||||
#: apps/transactions/views/quick_transactions.py:177
|
#: apps/transactions/views/quick_transactions.py:177
|
||||||
#: apps/transactions/views/quick_transactions.py:186
|
#: apps/transactions/views/quick_transactions.py:186
|
||||||
#: apps/transactions/views/quick_transactions.py:188
|
#: apps/transactions/views/quick_transactions.py:188
|
||||||
@@ -1648,8 +1647,8 @@ msgstr "Laatste Gegenereerde Referentiedatum"
|
|||||||
msgid "Quick Transaction"
|
msgid "Quick Transaction"
|
||||||
msgstr "Snelle verrichting"
|
msgstr "Snelle verrichting"
|
||||||
|
|
||||||
#: apps/transactions/models.py:1035 templates/includes/navbar.html:73
|
#: apps/transactions/models.py:1039 templates/includes/navbar.html:73
|
||||||
#: templates/includes/sidebar.html:108
|
#: templates/includes/sidebar.html:100
|
||||||
#: templates/quick_transactions/pages/index.html:5
|
#: templates/quick_transactions/pages/index.html:5
|
||||||
#: templates/quick_transactions/pages/index.html:11
|
#: templates/quick_transactions/pages/index.html:11
|
||||||
msgid "Quick Transactions"
|
msgid "Quick Transactions"
|
||||||
@@ -1971,7 +1970,7 @@ msgid "All Transactions"
|
|||||||
msgstr "Alle Verrichtingen"
|
msgstr "Alle Verrichtingen"
|
||||||
|
|
||||||
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
||||||
#: templates/includes/sidebar.html:73
|
#: templates/includes/sidebar.html:65
|
||||||
msgid "Calendar"
|
msgid "Calendar"
|
||||||
msgstr "Kalender"
|
msgstr "Kalender"
|
||||||
|
|
||||||
@@ -2083,6 +2082,7 @@ msgstr "Bewerken"
|
|||||||
#: templates/quick_transactions/fragments/list.html:34
|
#: templates/quick_transactions/fragments/list.html:34
|
||||||
#: templates/recurring_transactions/fragments/table.html:93
|
#: templates/recurring_transactions/fragments/table.html:93
|
||||||
#: templates/rules/fragments/list.html:45
|
#: templates/rules/fragments/list.html:45
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:61
|
#: templates/rules/fragments/transaction_rule/view.html:61
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:96
|
#: templates/rules/fragments/transaction_rule/view.html:96
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:137
|
#: templates/rules/fragments/transaction_rule/view.html:137
|
||||||
@@ -2208,6 +2208,8 @@ msgid "Current balance"
|
|||||||
msgstr "Huidige saldo"
|
msgstr "Huidige saldo"
|
||||||
|
|
||||||
#: templates/accounts/fragments/account_reconciliation.html:39
|
#: templates/accounts/fragments/account_reconciliation.html:39
|
||||||
|
#: templates/net_worth/net_worth.html:105
|
||||||
|
#: templates/net_worth/net_worth.html:362
|
||||||
msgid "Difference"
|
msgid "Difference"
|
||||||
msgstr "Verschil"
|
msgstr "Verschil"
|
||||||
|
|
||||||
@@ -2302,7 +2304,7 @@ msgid "Pick a month"
|
|||||||
msgstr "Kies een maand"
|
msgstr "Kies een maand"
|
||||||
|
|
||||||
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
||||||
#: templates/includes/sidebar.html:53
|
#: templates/includes/sidebar.html:45
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Sluiten"
|
msgstr "Sluiten"
|
||||||
|
|
||||||
@@ -2583,19 +2585,19 @@ msgstr "Actuele Prijs"
|
|||||||
msgid "Amount Bought"
|
msgid "Amount Bought"
|
||||||
msgstr "Gekocht Bedrag"
|
msgstr "Gekocht Bedrag"
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:390
|
#: templates/dca/fragments/strategy/details.html:392
|
||||||
msgid "Entry Price vs Current Price"
|
msgid "Entry Price vs Current Price"
|
||||||
msgstr "Instapprijs vs Huidige Prijs"
|
msgstr "Instapprijs vs Huidige Prijs"
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:406
|
#: templates/dca/fragments/strategy/details.html:408
|
||||||
msgid "Days Between Investments"
|
msgid "Days Between Investments"
|
||||||
msgstr "Dagen Tussen Investeringen"
|
msgstr "Dagen Tussen Investeringen"
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:453
|
#: templates/dca/fragments/strategy/details.html:455
|
||||||
msgid "Investment Frequency"
|
msgid "Investment Frequency"
|
||||||
msgstr "Investeringsfrequentie"
|
msgstr "Investeringsfrequentie"
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:455
|
#: templates/dca/fragments/strategy/details.html:457
|
||||||
msgid "The straighter the blue line, the more consistent your DCA strategy is."
|
msgid "The straighter the blue line, the more consistent your DCA strategy is."
|
||||||
msgstr "Hoe rechter de blauwe lijn, hoe consistenter je DCA-strategie is."
|
msgstr "Hoe rechter de blauwe lijn, hoe consistenter je DCA-strategie is."
|
||||||
|
|
||||||
@@ -2635,7 +2637,7 @@ msgid "Edit exchange rate"
|
|||||||
msgstr "Wisselkoers bewerken"
|
msgstr "Wisselkoers bewerken"
|
||||||
|
|
||||||
#: templates/exchange_rates/fragments/list.html:25
|
#: templates/exchange_rates/fragments/list.html:25
|
||||||
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:93
|
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:85
|
||||||
#: templates/installment_plans/fragments/list.html:21
|
#: templates/installment_plans/fragments/list.html:21
|
||||||
#: templates/yearly_overview/pages/overview_by_account.html:105
|
#: templates/yearly_overview/pages/overview_by_account.html:105
|
||||||
#: templates/yearly_overview/pages/overview_by_currency.html:107
|
#: templates/yearly_overview/pages/overview_by_currency.html:107
|
||||||
@@ -2692,7 +2694,7 @@ msgid "No services configured"
|
|||||||
msgstr "Geen diensten ingesteld"
|
msgstr "Geen diensten ingesteld"
|
||||||
|
|
||||||
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
|
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
|
||||||
#: templates/includes/sidebar.html:247
|
#: templates/includes/sidebar.html:239
|
||||||
msgid "Export and Restore"
|
msgid "Export and Restore"
|
||||||
msgstr "Exporteren en Herstellen"
|
msgstr "Exporteren en Herstellen"
|
||||||
|
|
||||||
@@ -2790,72 +2792,72 @@ msgstr "Navigatie Knop"
|
|||||||
msgid "Overview"
|
msgid "Overview"
|
||||||
msgstr "Overzicht"
|
msgstr "Overzicht"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
|
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:77
|
||||||
msgid "Net Worth"
|
msgid "Net Worth"
|
||||||
msgstr "Netto Waarde"
|
msgstr "Netto Waarde"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:45
|
#: templates/includes/navbar.html:45
|
||||||
#: templates/insights/fragments/category_overview/index.html:65
|
#: templates/insights/fragments/category_overview/index.html:65
|
||||||
#: templates/net_worth/net_worth.html:22
|
#: templates/net_worth/net_worth.html:23
|
||||||
msgid "Current"
|
msgid "Current"
|
||||||
msgstr "Huidige"
|
msgstr "Huidige"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:79
|
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:71
|
||||||
#: templates/insights/pages/index.html:5
|
#: templates/insights/pages/index.html:5
|
||||||
msgid "Insights"
|
msgid "Insights"
|
||||||
msgstr "Inzichten"
|
msgstr "Inzichten"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
|
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:93
|
||||||
msgid "Trash Can"
|
msgid "Trash Can"
|
||||||
msgstr "Prullenbak"
|
msgstr "Prullenbak"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
|
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:118
|
||||||
msgid "Tools"
|
msgid "Tools"
|
||||||
msgstr "Hulpmiddelen"
|
msgstr "Hulpmiddelen"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:128
|
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:120
|
||||||
msgid "Dollar Cost Average Tracker"
|
msgid "Dollar Cost Average Tracker"
|
||||||
msgstr "Dollar Kostgemiddelde Tracker"
|
msgstr "Dollar Kostgemiddelde Tracker"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:134
|
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:126
|
||||||
#: templates/mini_tools/unit_price_calculator.html:5
|
#: templates/mini_tools/unit_price_calculator.html:5
|
||||||
#: templates/mini_tools/unit_price_calculator.html:10
|
#: templates/mini_tools/unit_price_calculator.html:10
|
||||||
msgid "Unit Price Calculator"
|
msgid "Unit Price Calculator"
|
||||||
msgstr "Eenheidsprijs berekenen"
|
msgstr "Eenheidsprijs berekenen"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:140
|
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:132
|
||||||
#: templates/mini_tools/currency_converter/currency_converter.html:8
|
#: templates/mini_tools/currency_converter/currency_converter.html:8
|
||||||
#: templates/mini_tools/currency_converter/currency_converter.html:15
|
#: templates/mini_tools/currency_converter/currency_converter.html:15
|
||||||
msgid "Currency Converter"
|
msgid "Currency Converter"
|
||||||
msgstr "Valuta omrekenen"
|
msgstr "Valuta omrekenen"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
|
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:150
|
||||||
#: templates/includes/sidebar.html:171
|
#: templates/includes/sidebar.html:163
|
||||||
msgid "Management"
|
msgid "Management"
|
||||||
msgstr "Beheer"
|
msgstr "Beheer"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
|
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:224
|
||||||
msgid "Automation"
|
msgid "Automation"
|
||||||
msgstr "Automatisatie"
|
msgstr "Automatisatie"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
|
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:253
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "Admin"
|
msgstr "Admin"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:270
|
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:262
|
||||||
msgid "Only use this if you know what you're doing"
|
msgid "Only use this if you know what you're doing"
|
||||||
msgstr "Gebruik dit alleen als je weet wat je doet"
|
msgstr "Gebruik dit alleen als je weet wat je doet"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
|
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:261
|
||||||
msgid "Django Admin"
|
msgid "Django Admin"
|
||||||
msgstr "Django Beheerder"
|
msgstr "Django Beheerder"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
|
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:276
|
||||||
msgid "is available"
|
msgid "is available"
|
||||||
msgstr "is beschikbaar"
|
msgstr "is beschikbaar"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
||||||
#: templates/includes/sidebar.html:290
|
#: templates/includes/sidebar.html:282
|
||||||
msgid "Calculator"
|
msgid "Calculator"
|
||||||
msgstr "Rekenmachine"
|
msgstr "Rekenmachine"
|
||||||
|
|
||||||
@@ -3190,25 +3192,29 @@ msgstr "Filter verrichtingen"
|
|||||||
msgid "Order by"
|
msgid "Order by"
|
||||||
msgstr "Sorteer op"
|
msgstr "Sorteer op"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:40
|
#: templates/net_worth/net_worth.html:42
|
||||||
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
||||||
msgid "By currency"
|
msgid "By currency"
|
||||||
msgstr "Op munteenheid"
|
msgstr "Op munteenheid"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:75
|
#: templates/net_worth/net_worth.html:78
|
||||||
msgid "Consolidated"
|
msgid "Consolidated"
|
||||||
msgstr "Samengevoegd"
|
msgstr "Samengevoegd"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:104
|
#: templates/net_worth/net_worth.html:101
|
||||||
|
msgid "Evolution"
|
||||||
|
msgstr "Evolutie"
|
||||||
|
|
||||||
|
#: templates/net_worth/net_worth.html:128
|
||||||
#: templates/yearly_overview/pages/overview_by_account.html:7
|
#: templates/yearly_overview/pages/overview_by_account.html:7
|
||||||
msgid "By account"
|
msgid "By account"
|
||||||
msgstr "Op rekening"
|
msgstr "Op rekening"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:211
|
#: templates/net_worth/net_worth.html:236
|
||||||
msgid "Evolution by currency"
|
msgid "Evolution by currency"
|
||||||
msgstr "Evolutie per munteenheid"
|
msgstr "Evolutie per munteenheid"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:275
|
#: templates/net_worth/net_worth.html:300
|
||||||
msgid "Evolution by account"
|
msgid "Evolution by account"
|
||||||
msgstr "Evolutie per rekening"
|
msgstr "Evolutie per rekening"
|
||||||
|
|
||||||
@@ -3311,20 +3317,18 @@ msgid "Add transaction rule"
|
|||||||
msgstr "Verrichtingsregel toevoegen"
|
msgstr "Verrichtingsregel toevoegen"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
#: templates/rules/fragments/transaction_rule/view.html:127
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
msgid "Create"
|
||||||
#: templates/rules/fragments/transaction_rule/edit.html:5
|
msgstr "Aanmaken"
|
||||||
msgid "Edit transaction rule"
|
|
||||||
msgstr "Verrichtingsregel bewerken"
|
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:8
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:8
|
||||||
msgid "Visual"
|
msgid "Visual"
|
||||||
msgstr ""
|
msgstr "Visueel"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:21
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:21
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:92
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:92
|
||||||
msgid "Run a test to see..."
|
msgid "Run a test to see..."
|
||||||
msgstr ""
|
msgstr "Voer een test uit om te zien..."
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:30
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:30
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:39
|
#: templates/rules/fragments/transaction_rule/view.html:39
|
||||||
@@ -3339,10 +3343,8 @@ msgid "Update or create transaction"
|
|||||||
msgstr "Bewerk of maak verrichtingen"
|
msgstr "Bewerk of maak verrichtingen"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:42
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:42
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Start Date"
|
|
||||||
msgid "Start"
|
msgid "Start"
|
||||||
msgstr "Startdatum"
|
msgstr "Start"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:51
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:51
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:44
|
#: templates/rules/fragments/transaction_rule/view.html:44
|
||||||
@@ -3355,10 +3357,12 @@ msgid "to"
|
|||||||
msgstr "naar"
|
msgstr "naar"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:70
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:70
|
||||||
#, fuzzy
|
|
||||||
#| msgid "No transactions on this date"
|
|
||||||
msgid "No transaction found, a new one will be created"
|
msgid "No transaction found, a new one will be created"
|
||||||
msgstr "Geen verrichtingen op deze datum"
|
msgstr "Geen verrichting"
|
||||||
|
|
||||||
|
#: templates/rules/fragments/transaction_rule/edit.html:5
|
||||||
|
msgid "Edit transaction rule"
|
||||||
|
msgstr "Verrichtingsregel bewerken"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/transaction_rule_action/add.html:5
|
#: templates/rules/fragments/transaction_rule/transaction_rule_action/add.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/update_or_create_transaction_rule_action/add.html:5
|
#: templates/rules/fragments/transaction_rule/update_or_create_transaction_rule_action/add.html:5
|
||||||
@@ -3390,10 +3394,6 @@ msgstr "Bewerken om te bekijken"
|
|||||||
msgid "This rule has no actions"
|
msgid "This rule has no actions"
|
||||||
msgstr "Deze regel heeft geen acties"
|
msgstr "Deze regel heeft geen acties"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:127
|
|
||||||
msgid "Create"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:144
|
#: templates/rules/fragments/transaction_rule/view.html:144
|
||||||
msgid "Add new"
|
msgid "Add new"
|
||||||
msgstr "Nieuwe toevoegen"
|
msgstr "Nieuwe toevoegen"
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-07 13:08+0000\n"
|
"POT-Creation-Date: 2025-09-20 14:08+0000\n"
|
||||||
"PO-Revision-Date: 2025-09-07 14:17+0000\n"
|
"PO-Revision-Date: 2025-09-20 14:44+0000\n"
|
||||||
"Last-Translator: Herculino Trotta <netotrotta@gmail.com>\n"
|
"Last-Translator: Herculino Trotta <netotrotta@gmail.com>\n"
|
||||||
"Language-Team: Portuguese (Brazil) <https://translations.herculino.com/"
|
"Language-Team: Portuguese (Brazil) <https://translations.herculino.com/"
|
||||||
"projects/wygiwyh/app/pt_BR/>\n"
|
"projects/wygiwyh/app/pt_BR/>\n"
|
||||||
@@ -17,13 +17,13 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||||
"X-Generator: Weblate 5.13\n"
|
"X-Generator: Weblate 5.13.3\n"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:26
|
#: apps/accounts/forms.py:26
|
||||||
msgid "Group name"
|
msgid "Group name"
|
||||||
msgstr "Nome do grupo"
|
msgstr "Nome do grupo"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:42 apps/accounts/forms.py:118
|
#: apps/accounts/forms.py:42 apps/accounts/forms.py:112
|
||||||
#: apps/currencies/forms.py:55 apps/currencies/forms.py:93
|
#: 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/currencies/forms.py:146 apps/dca/forms.py:49 apps/dca/forms.py:224
|
||||||
#: apps/import_app/forms.py:34 apps/rules/forms.py:57 apps/rules/forms.py:101
|
#: apps/import_app/forms.py:34 apps/rules/forms.py:57 apps/rules/forms.py:101
|
||||||
@@ -33,11 +33,12 @@ msgstr "Nome do grupo"
|
|||||||
#: apps/transactions/forms.py:953 apps/transactions/forms.py:988
|
#: apps/transactions/forms.py:953 apps/transactions/forms.py:988
|
||||||
#: apps/transactions/forms.py:1142 apps/users/forms.py:217
|
#: apps/transactions/forms.py:1142 apps/users/forms.py:217
|
||||||
#: apps/users/forms.py:379
|
#: apps/users/forms.py:379
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:132
|
#: templates/rules/fragments/transaction_rule/view.html:132
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Atualizar"
|
msgstr "Atualizar"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:50 apps/accounts/forms.py:126
|
#: apps/accounts/forms.py:50 apps/accounts/forms.py:120
|
||||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
||||||
#: apps/currencies/forms.py:101 apps/currencies/forms.py:154
|
#: apps/currencies/forms.py:101 apps/currencies/forms.py:154
|
||||||
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
|
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
|
||||||
@@ -71,35 +72,35 @@ msgstr "Adicionar"
|
|||||||
msgid "Group"
|
msgid "Group"
|
||||||
msgstr "Grupo"
|
msgstr "Grupo"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:135
|
#: apps/accounts/forms.py:129
|
||||||
msgid "New balance"
|
msgid "New balance"
|
||||||
msgstr "Novo saldo"
|
msgstr "Novo saldo"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:141 apps/dca/forms.py:85 apps/dca/forms.py:92
|
#: apps/accounts/forms.py:135 apps/dca/forms.py:85 apps/dca/forms.py:92
|
||||||
#: apps/insights/forms.py:118 apps/rules/forms.py:185 apps/rules/forms.py:201
|
#: apps/insights/forms.py:118 apps/rules/forms.py:185 apps/rules/forms.py:201
|
||||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:263
|
#: apps/transactions/forms.py:44 apps/transactions/forms.py:263
|
||||||
#: apps/transactions/forms.py:438 apps/transactions/forms.py:540
|
#: apps/transactions/forms.py:438 apps/transactions/forms.py:540
|
||||||
#: apps/transactions/forms.py:547 apps/transactions/forms.py:759
|
#: apps/transactions/forms.py:547 apps/transactions/forms.py:759
|
||||||
#: apps/transactions/forms.py:1020 apps/transactions/models.py:322
|
#: apps/transactions/forms.py:1020 apps/transactions/models.py:323
|
||||||
#: apps/transactions/models.py:556 apps/transactions/models.py:756
|
#: apps/transactions/models.py:560 apps/transactions/models.py:760
|
||||||
#: apps/transactions/models.py:1006
|
#: apps/transactions/models.py:1010
|
||||||
#: templates/insights/fragments/category_overview/index.html:78
|
#: templates/insights/fragments/category_overview/index.html:78
|
||||||
#: templates/insights/fragments/category_overview/index.html:530
|
#: templates/insights/fragments/category_overview/index.html:530
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr "Categoria"
|
msgstr "Categoria"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:148 apps/dca/forms.py:101 apps/dca/forms.py:109
|
#: apps/accounts/forms.py:142 apps/dca/forms.py:101 apps/dca/forms.py:109
|
||||||
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135
|
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135
|
||||||
#: apps/rules/forms.py:188 apps/rules/forms.py:198 apps/rules/models.py:45
|
#: apps/rules/forms.py:188 apps/rules/forms.py:198 apps/rules/models.py:45
|
||||||
#: apps/rules/models.py:315 apps/transactions/filters.py:69
|
#: apps/rules/models.py:315 apps/transactions/filters.py:69
|
||||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:271
|
#: apps/transactions/forms.py:52 apps/transactions/forms.py:271
|
||||||
#: apps/transactions/forms.py:446 apps/transactions/forms.py:556
|
#: apps/transactions/forms.py:446 apps/transactions/forms.py:556
|
||||||
#: apps/transactions/forms.py:564 apps/transactions/forms.py:752
|
#: apps/transactions/forms.py:564 apps/transactions/forms.py:752
|
||||||
#: apps/transactions/forms.py:1013 apps/transactions/models.py:328
|
#: apps/transactions/forms.py:1013 apps/transactions/models.py:329
|
||||||
#: apps/transactions/models.py:558 apps/transactions/models.py:760
|
#: apps/transactions/models.py:562 apps/transactions/models.py:764
|
||||||
#: apps/transactions/models.py:1012 templates/includes/navbar.html:111
|
#: apps/transactions/models.py:1016 templates/includes/navbar.html:111
|
||||||
#: templates/includes/sidebar.html:192
|
#: templates/includes/sidebar.html:184
|
||||||
#: templates/insights/fragments/category_overview/index.html:36
|
#: templates/insights/fragments/category_overview/index.html:36
|
||||||
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
@@ -107,8 +108,8 @@ msgstr "Tags"
|
|||||||
|
|
||||||
#: apps/accounts/models.py:12 apps/accounts/models.py:29 apps/dca/models.py:13
|
#: apps/accounts/models.py:12 apps/accounts/models.py:29 apps/dca/models.py:13
|
||||||
#: apps/import_app/models.py:14 apps/rules/models.py:13
|
#: apps/import_app/models.py:14 apps/rules/models.py:13
|
||||||
#: apps/transactions/models.py:214 apps/transactions/models.py:239
|
#: apps/transactions/models.py:215 apps/transactions/models.py:240
|
||||||
#: apps/transactions/models.py:263 apps/transactions/models.py:974
|
#: apps/transactions/models.py:264 apps/transactions/models.py:978
|
||||||
#: templates/account_groups/fragments/list.html:25
|
#: templates/account_groups/fragments/list.html:25
|
||||||
#: templates/accounts/fragments/list.html:25
|
#: templates/accounts/fragments/list.html:25
|
||||||
#: templates/categories/fragments/table.html:16
|
#: templates/categories/fragments/table.html:16
|
||||||
@@ -131,7 +132,7 @@ msgstr "Grupo da Conta"
|
|||||||
|
|
||||||
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
||||||
#: templates/account_groups/pages/index.html:4
|
#: templates/account_groups/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:212
|
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:204
|
||||||
msgid "Account Groups"
|
msgid "Account Groups"
|
||||||
msgstr "Grupos da Conta"
|
msgstr "Grupos da Conta"
|
||||||
|
|
||||||
@@ -180,9 +181,9 @@ msgstr ""
|
|||||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:283
|
#: apps/transactions/forms.py:64 apps/transactions/forms.py:283
|
||||||
#: apps/transactions/forms.py:405 apps/transactions/forms.py:744
|
#: apps/transactions/forms.py:405 apps/transactions/forms.py:744
|
||||||
#: apps/transactions/forms.py:1005 apps/transactions/models.py:294
|
#: apps/transactions/forms.py:1005 apps/transactions/models.py:295
|
||||||
#: apps/transactions/models.py:516 apps/transactions/models.py:738
|
#: apps/transactions/models.py:520 apps/transactions/models.py:742
|
||||||
#: apps/transactions/models.py:980
|
#: apps/transactions/models.py:984
|
||||||
#: templates/installment_plans/fragments/table.html:17
|
#: templates/installment_plans/fragments/table.html:17
|
||||||
#: templates/quick_transactions/fragments/list.html:14
|
#: templates/quick_transactions/fragments/list.html:14
|
||||||
#: templates/recurring_transactions/fragments/table.html:19
|
#: templates/recurring_transactions/fragments/table.html:19
|
||||||
@@ -195,8 +196,8 @@ msgstr "Conta"
|
|||||||
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
||||||
#: templates/accounts/fragments/list.html:5
|
#: templates/accounts/fragments/list.html:5
|
||||||
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
||||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
|
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:196
|
||||||
#: templates/includes/sidebar.html:206
|
#: templates/includes/sidebar.html:198
|
||||||
#: templates/monthly_overview/pages/overview.html:94
|
#: templates/monthly_overview/pages/overview.html:94
|
||||||
#: templates/transactions/fragments/summary.html:12
|
#: templates/transactions/fragments/summary.html:12
|
||||||
#: templates/transactions/pages/transactions.html:137
|
#: templates/transactions/pages/transactions.html:137
|
||||||
@@ -504,7 +505,7 @@ msgstr "Sufixo"
|
|||||||
#: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:180
|
#: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:180
|
||||||
#: apps/rules/forms.py:194 apps/rules/models.py:38 apps/rules/models.py:279
|
#: apps/rules/forms.py:194 apps/rules/models.py:38 apps/rules/models.py:279
|
||||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:410
|
#: apps/transactions/forms.py:68 apps/transactions/forms.py:410
|
||||||
#: apps/transactions/forms.py:568 apps/transactions/models.py:304
|
#: apps/transactions/forms.py:568 apps/transactions/models.py:305
|
||||||
#: templates/dca/fragments/strategy/details.html:52
|
#: templates/dca/fragments/strategy/details.html:52
|
||||||
#: templates/exchange_rates/fragments/table.html:10
|
#: templates/exchange_rates/fragments/table.html:10
|
||||||
#: templates/exchange_rates_services/fragments/table.html:10
|
#: templates/exchange_rates_services/fragments/table.html:10
|
||||||
@@ -527,8 +528,8 @@ msgstr "Casas Decimais"
|
|||||||
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60
|
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60
|
||||||
#: templates/currencies/fragments/list.html:5
|
#: templates/currencies/fragments/list.html:5
|
||||||
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
||||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
|
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:210
|
||||||
#: templates/includes/sidebar.html:220
|
#: templates/includes/sidebar.html:212
|
||||||
#: templates/monthly_overview/pages/overview.html:81
|
#: templates/monthly_overview/pages/overview.html:81
|
||||||
#: templates/transactions/fragments/summary.html:8
|
#: templates/transactions/fragments/summary.html:8
|
||||||
#: templates/transactions/pages/transactions.html:124
|
#: templates/transactions/pages/transactions.html:124
|
||||||
@@ -563,7 +564,7 @@ msgstr "Automático"
|
|||||||
#: apps/currencies/models.py:82 apps/export_app/forms.py:68
|
#: apps/currencies/models.py:82 apps/export_app/forms.py:68
|
||||||
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
|
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
|
||||||
#: templates/exchange_rates/pages/index.html:4
|
#: templates/exchange_rates/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:226
|
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:218
|
||||||
msgid "Exchange Rates"
|
msgid "Exchange Rates"
|
||||||
msgstr "Taxas de Câmbio"
|
msgstr "Taxas de Câmbio"
|
||||||
|
|
||||||
@@ -591,8 +592,8 @@ msgstr "Nome do Serviço"
|
|||||||
msgid "Service Type"
|
msgid "Service Type"
|
||||||
msgstr "Tipo de Serviço"
|
msgstr "Tipo de Serviço"
|
||||||
|
|
||||||
#: apps/currencies/models.py:118 apps/transactions/models.py:218
|
#: apps/currencies/models.py:118 apps/transactions/models.py:219
|
||||||
#: apps/transactions/models.py:242 apps/transactions/models.py:266
|
#: apps/transactions/models.py:243 apps/transactions/models.py:267
|
||||||
#: templates/categories/fragments/list.html:21
|
#: templates/categories/fragments/list.html:21
|
||||||
#: templates/entities/fragments/list.html:21
|
#: templates/entities/fragments/list.html:21
|
||||||
#: templates/recurring_transactions/fragments/list.html:21
|
#: templates/recurring_transactions/fragments/list.html:21
|
||||||
@@ -781,8 +782,8 @@ msgstr "Moeda de pagamento"
|
|||||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:184
|
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:184
|
||||||
#: apps/rules/forms.py:200 apps/rules/models.py:43 apps/rules/models.py:295
|
#: apps/rules/forms.py:200 apps/rules/models.py:43 apps/rules/models.py:295
|
||||||
#: apps/transactions/forms.py:432 apps/transactions/forms.py:584
|
#: apps/transactions/forms.py:432 apps/transactions/forms.py:584
|
||||||
#: apps/transactions/models.py:318 apps/transactions/models.py:565
|
#: apps/transactions/models.py:319 apps/transactions/models.py:569
|
||||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1002
|
#: apps/transactions/models.py:770 apps/transactions/models.py:1006
|
||||||
msgid "Notes"
|
msgid "Notes"
|
||||||
msgstr "Notas"
|
msgstr "Notas"
|
||||||
|
|
||||||
@@ -839,15 +840,15 @@ msgid "Entry deleted successfully"
|
|||||||
msgstr "Entrada apagada com sucesso"
|
msgstr "Entrada apagada com sucesso"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131
|
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131
|
||||||
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:263
|
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:255
|
||||||
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
|
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "Usuários"
|
msgstr "Usuários"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
||||||
#: apps/transactions/models.py:379 templates/includes/navbar.html:58
|
#: apps/transactions/models.py:380 templates/includes/navbar.html:58
|
||||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
|
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:83
|
||||||
#: templates/includes/sidebar.html:184
|
#: templates/includes/sidebar.html:176
|
||||||
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
||||||
#: templates/recurring_transactions/fragments/table.html:39
|
#: templates/recurring_transactions/fragments/table.html:39
|
||||||
#: templates/transactions/pages/transactions.html:5
|
#: templates/transactions/pages/transactions.html:5
|
||||||
@@ -857,7 +858,7 @@ msgstr "Transações"
|
|||||||
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134
|
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134
|
||||||
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
||||||
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
||||||
#: templates/includes/sidebar.html:186
|
#: templates/includes/sidebar.html:178
|
||||||
msgid "Categories"
|
msgid "Categories"
|
||||||
msgstr "Categorias"
|
msgstr "Categorias"
|
||||||
|
|
||||||
@@ -866,27 +867,27 @@ msgstr "Categorias"
|
|||||||
#: apps/rules/models.py:307 apps/transactions/filters.py:74
|
#: apps/rules/models.py:307 apps/transactions/filters.py:74
|
||||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:279
|
#: apps/transactions/forms.py:60 apps/transactions/forms.py:279
|
||||||
#: apps/transactions/forms.py:454 apps/transactions/forms.py:767
|
#: apps/transactions/forms.py:454 apps/transactions/forms.py:767
|
||||||
#: apps/transactions/forms.py:1028 apps/transactions/models.py:277
|
#: apps/transactions/forms.py:1028 apps/transactions/models.py:278
|
||||||
#: apps/transactions/models.py:333 apps/transactions/models.py:561
|
#: apps/transactions/models.py:334 apps/transactions/models.py:565
|
||||||
#: apps/transactions/models.py:763 apps/transactions/models.py:1017
|
#: apps/transactions/models.py:767 apps/transactions/models.py:1021
|
||||||
#: templates/entities/fragments/list.html:5
|
#: templates/entities/fragments/list.html:5
|
||||||
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
|
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
|
||||||
#: templates/includes/sidebar.html:198
|
#: templates/includes/sidebar.html:190
|
||||||
#: templates/insights/fragments/category_overview/index.html:49
|
#: templates/insights/fragments/category_overview/index.html:49
|
||||||
msgid "Entities"
|
msgid "Entities"
|
||||||
msgstr "Entidades"
|
msgstr "Entidades"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
||||||
#: apps/transactions/models.py:803 templates/includes/navbar.html:77
|
#: apps/transactions/models.py:807 templates/includes/navbar.html:77
|
||||||
#: templates/includes/sidebar.html:120
|
#: templates/includes/sidebar.html:112
|
||||||
#: templates/recurring_transactions/fragments/list.html:5
|
#: templates/recurring_transactions/fragments/list.html:5
|
||||||
#: templates/recurring_transactions/pages/index.html:4
|
#: templates/recurring_transactions/pages/index.html:4
|
||||||
msgid "Recurring Transactions"
|
msgid "Recurring Transactions"
|
||||||
msgstr "Transações Recorrentes"
|
msgstr "Transações Recorrentes"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
||||||
#: apps/transactions/models.py:579 templates/includes/navbar.html:75
|
#: apps/transactions/models.py:583 templates/includes/navbar.html:75
|
||||||
#: templates/includes/sidebar.html:114
|
#: templates/includes/sidebar.html:106
|
||||||
#: templates/installment_plans/fragments/list.html:5
|
#: templates/installment_plans/fragments/list.html:5
|
||||||
#: templates/installment_plans/pages/index.html:4
|
#: templates/installment_plans/pages/index.html:4
|
||||||
msgid "Installment Plans"
|
msgid "Installment Plans"
|
||||||
@@ -895,12 +896,12 @@ msgstr "Parcelamentos"
|
|||||||
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
||||||
#: templates/exchange_rates_services/fragments/list.html:6
|
#: templates/exchange_rates_services/fragments/list.html:6
|
||||||
#: templates/exchange_rates_services/pages/index.html:4
|
#: templates/exchange_rates_services/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:254
|
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:246
|
||||||
msgid "Automatic Exchange Rates"
|
msgid "Automatic Exchange Rates"
|
||||||
msgstr "Taxas de Câmbio Automáticas"
|
msgstr "Taxas de Câmbio Automáticas"
|
||||||
|
|
||||||
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135
|
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135
|
||||||
#: templates/includes/sidebar.html:234 templates/rules/fragments/list.html:5
|
#: templates/includes/sidebar.html:226 templates/rules/fragments/list.html:5
|
||||||
#: templates/rules/pages/index.html:4
|
#: templates/rules/pages/index.html:4
|
||||||
msgid "Rules"
|
msgid "Rules"
|
||||||
msgstr "Regras"
|
msgstr "Regras"
|
||||||
@@ -972,7 +973,7 @@ msgstr "Selecione um arquivo"
|
|||||||
|
|
||||||
#: apps/import_app/forms.py:61
|
#: apps/import_app/forms.py:61
|
||||||
#: templates/import_app/fragments/profiles/list.html:62
|
#: templates/import_app/fragments/profiles/list.html:62
|
||||||
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:240
|
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:232
|
||||||
msgid "Import"
|
msgid "Import"
|
||||||
msgstr "Importar"
|
msgstr "Importar"
|
||||||
|
|
||||||
@@ -1133,15 +1134,15 @@ msgstr "Operador"
|
|||||||
|
|
||||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:36
|
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:36
|
||||||
#: apps/rules/models.py:271 apps/transactions/forms.py:396
|
#: apps/rules/models.py:271 apps/transactions/forms.py:396
|
||||||
#: apps/transactions/models.py:301 apps/transactions/models.py:521
|
#: apps/transactions/models.py:302 apps/transactions/models.py:525
|
||||||
#: apps/transactions/models.py:744 apps/transactions/models.py:987
|
#: apps/transactions/models.py:748 apps/transactions/models.py:991
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr "Tipo"
|
msgstr "Tipo"
|
||||||
|
|
||||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:37
|
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:37
|
||||||
#: apps/rules/models.py:275 apps/transactions/filters.py:23
|
#: apps/rules/models.py:275 apps/transactions/filters.py:23
|
||||||
#: apps/transactions/forms.py:400 apps/transactions/models.py:303
|
#: apps/transactions/forms.py:400 apps/transactions/models.py:304
|
||||||
#: apps/transactions/models.py:989 templates/cotton/transaction/item.html:21
|
#: apps/transactions/models.py:993 templates/cotton/transaction/item.html:21
|
||||||
#: templates/cotton/transaction/item.html:32
|
#: templates/cotton/transaction/item.html:32
|
||||||
#: templates/transactions/widgets/paid_toggle_button.html:12
|
#: templates/transactions/widgets/paid_toggle_button.html:12
|
||||||
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:16
|
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:16
|
||||||
@@ -1151,15 +1152,15 @@ msgstr "Pago"
|
|||||||
#: apps/rules/forms.py:181 apps/rules/forms.py:195 apps/rules/models.py:39
|
#: apps/rules/forms.py:181 apps/rules/forms.py:195 apps/rules/models.py:39
|
||||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||||
#: apps/transactions/forms.py:416 apps/transactions/forms.py:571
|
#: apps/transactions/forms.py:416 apps/transactions/forms.py:571
|
||||||
#: apps/transactions/forms.py:773 apps/transactions/models.py:305
|
#: apps/transactions/forms.py:773 apps/transactions/models.py:306
|
||||||
#: apps/transactions/models.py:539 apps/transactions/models.py:768
|
#: apps/transactions/models.py:543 apps/transactions/models.py:772
|
||||||
msgid "Reference Date"
|
msgid "Reference Date"
|
||||||
msgstr "Data de Referência"
|
msgstr "Data de Referência"
|
||||||
|
|
||||||
#: apps/rules/forms.py:182 apps/rules/forms.py:196 apps/rules/models.py:41
|
#: apps/rules/forms.py:182 apps/rules/forms.py:196 apps/rules/models.py:41
|
||||||
#: apps/rules/models.py:287 apps/transactions/forms.py:423
|
#: apps/rules/models.py:287 apps/transactions/forms.py:423
|
||||||
#: apps/transactions/models.py:311 apps/transactions/models.py:749
|
#: apps/transactions/models.py:312 apps/transactions/models.py:753
|
||||||
#: apps/transactions/models.py:995 templates/insights/fragments/sankey.html:95
|
#: apps/transactions/models.py:999 templates/insights/fragments/sankey.html:95
|
||||||
#: templates/installment_plans/fragments/table.html:18
|
#: templates/installment_plans/fragments/table.html:18
|
||||||
#: templates/quick_transactions/fragments/list.html:15
|
#: templates/quick_transactions/fragments/list.html:15
|
||||||
#: templates/recurring_transactions/fragments/table.html:20
|
#: templates/recurring_transactions/fragments/table.html:20
|
||||||
@@ -1169,27 +1170,27 @@ msgstr "Quantia"
|
|||||||
#: apps/rules/forms.py:183 apps/rules/forms.py:197 apps/rules/models.py:14
|
#: apps/rules/forms.py:183 apps/rules/forms.py:197 apps/rules/models.py:14
|
||||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:575
|
#: apps/transactions/forms.py:427 apps/transactions/forms.py:575
|
||||||
#: apps/transactions/models.py:316 apps/transactions/models.py:523
|
#: apps/transactions/models.py:317 apps/transactions/models.py:527
|
||||||
#: apps/transactions/models.py:752 apps/transactions/models.py:1000
|
#: apps/transactions/models.py:756 apps/transactions/models.py:1004
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Descrição"
|
msgstr "Descrição"
|
||||||
|
|
||||||
#: apps/rules/forms.py:186 apps/rules/forms.py:202 apps/rules/models.py:47
|
#: apps/rules/forms.py:186 apps/rules/forms.py:202 apps/rules/models.py:47
|
||||||
#: apps/rules/models.py:299 apps/transactions/models.py:355
|
#: apps/rules/models.py:299 apps/transactions/models.py:356
|
||||||
#: apps/transactions/models.py:1022
|
#: apps/transactions/models.py:1026
|
||||||
msgid "Internal Note"
|
msgid "Internal Note"
|
||||||
msgstr "Nota Interna"
|
msgstr "Nota Interna"
|
||||||
|
|
||||||
#: apps/rules/forms.py:187 apps/rules/forms.py:203 apps/rules/models.py:48
|
#: apps/rules/forms.py:187 apps/rules/forms.py:203 apps/rules/models.py:48
|
||||||
#: apps/rules/models.py:303 apps/transactions/models.py:357
|
#: apps/rules/models.py:303 apps/transactions/models.py:358
|
||||||
#: apps/transactions/models.py:1024
|
#: apps/transactions/models.py:1028
|
||||||
msgid "Internal ID"
|
msgid "Internal ID"
|
||||||
msgstr "ID Interna"
|
msgstr "ID Interna"
|
||||||
|
|
||||||
#: apps/rules/forms.py:190 apps/rules/forms.py:204 apps/rules/models.py:40
|
#: apps/rules/forms.py:190 apps/rules/forms.py:204 apps/rules/models.py:40
|
||||||
#: apps/rules/models.py:319 apps/transactions/forms.py:588
|
#: apps/rules/models.py:319 apps/transactions/forms.py:588
|
||||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
#: apps/transactions/models.py:216 apps/transactions/models.py:307
|
||||||
#: apps/transactions/models.py:990
|
#: apps/transactions/models.py:994
|
||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "Silenciada"
|
msgstr "Silenciada"
|
||||||
|
|
||||||
@@ -1202,7 +1203,7 @@ msgid "Set Values"
|
|||||||
msgstr "Definir valores"
|
msgstr "Definir valores"
|
||||||
|
|
||||||
#: apps/rules/forms.py:415 apps/rules/forms.py:452 apps/rules/forms.py:489
|
#: apps/rules/forms.py:415 apps/rules/forms.py:452 apps/rules/forms.py:489
|
||||||
#: apps/transactions/models.py:378
|
#: apps/transactions/models.py:379
|
||||||
msgid "Transaction"
|
msgid "Transaction"
|
||||||
msgstr "Transação"
|
msgstr "Transação"
|
||||||
|
|
||||||
@@ -1211,6 +1212,9 @@ msgid "Type to search for a transaction"
|
|||||||
msgstr "Digite para buscar uma transação"
|
msgstr "Digite para buscar uma transação"
|
||||||
|
|
||||||
#: apps/rules/forms.py:431 apps/rules/forms.py:468 apps/rules/forms.py:504
|
#: apps/rules/forms.py:431 apps/rules/forms.py:468 apps/rules/forms.py:504
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:121
|
#: templates/rules/fragments/transaction_rule/view.html:121
|
||||||
msgid "Test"
|
msgid "Test"
|
||||||
msgstr "Testar"
|
msgstr "Testar"
|
||||||
@@ -1338,7 +1342,7 @@ msgstr "Ação Atualizar ou Criar Transação apagada com sucesso"
|
|||||||
#: apps/transactions/filters.py:24 templates/cotton/transaction/item.html:21
|
#: apps/transactions/filters.py:24 templates/cotton/transaction/item.html:21
|
||||||
#: templates/cotton/transaction/item.html:32 templates/includes/navbar.html:47
|
#: templates/cotton/transaction/item.html:32 templates/includes/navbar.html:47
|
||||||
#: templates/insights/fragments/category_overview/index.html:61
|
#: templates/insights/fragments/category_overview/index.html:61
|
||||||
#: templates/net_worth/net_worth.html:32
|
#: templates/net_worth/net_worth.html:33
|
||||||
#: templates/transactions/widgets/paid_toggle_button.html:8
|
#: templates/transactions/widgets/paid_toggle_button.html:8
|
||||||
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:12
|
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:12
|
||||||
msgid "Projected"
|
msgid "Projected"
|
||||||
@@ -1448,7 +1452,7 @@ msgstr "transações futuras"
|
|||||||
msgid "End date should be after the start date"
|
msgid "End date should be after the start date"
|
||||||
msgstr "Data final deve ser após data inicial"
|
msgstr "Data final deve ser após data inicial"
|
||||||
|
|
||||||
#: apps/transactions/models.py:220
|
#: apps/transactions/models.py:221
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated categories won't be able to be selected when creating new "
|
"Deactivated categories won't be able to be selected when creating new "
|
||||||
"transactions"
|
"transactions"
|
||||||
@@ -1456,25 +1460,25 @@ msgstr ""
|
|||||||
"As categorias desativadas não poderão ser selecionadas ao criar novas "
|
"As categorias desativadas não poderão ser selecionadas ao criar novas "
|
||||||
"transações"
|
"transações"
|
||||||
|
|
||||||
#: apps/transactions/models.py:228
|
#: apps/transactions/models.py:229
|
||||||
msgid "Transaction Category"
|
msgid "Transaction Category"
|
||||||
msgstr "Categoria da Transação"
|
msgstr "Categoria da Transação"
|
||||||
|
|
||||||
#: apps/transactions/models.py:229
|
#: apps/transactions/models.py:230
|
||||||
msgid "Transaction Categories"
|
msgid "Transaction Categories"
|
||||||
msgstr "Categorias da Trasanção"
|
msgstr "Categorias da Trasanção"
|
||||||
|
|
||||||
#: apps/transactions/models.py:244
|
#: apps/transactions/models.py:245
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated tags won't be able to be selected when creating new transactions"
|
"Deactivated tags won't be able to be selected when creating new transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"As tags desativadas não poderão ser selecionadas ao criar novas transações"
|
"As tags desativadas não poderão ser selecionadas ao criar novas transações"
|
||||||
|
|
||||||
#: apps/transactions/models.py:252 apps/transactions/models.py:253
|
#: apps/transactions/models.py:253 apps/transactions/models.py:254
|
||||||
msgid "Transaction Tags"
|
msgid "Transaction Tags"
|
||||||
msgstr "Tags da Transação"
|
msgstr "Tags da Transação"
|
||||||
|
|
||||||
#: apps/transactions/models.py:268
|
#: apps/transactions/models.py:269
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated entities won't be able to be selected when creating new "
|
"Deactivated entities won't be able to be selected when creating new "
|
||||||
"transactions"
|
"transactions"
|
||||||
@@ -1482,11 +1486,11 @@ msgstr ""
|
|||||||
"As entidades desativadas não poderão ser selecionadas ao criar novas "
|
"As entidades desativadas não poderão ser selecionadas ao criar novas "
|
||||||
"transações"
|
"transações"
|
||||||
|
|
||||||
#: apps/transactions/models.py:276
|
#: apps/transactions/models.py:277
|
||||||
msgid "Entity"
|
msgid "Entity"
|
||||||
msgstr "Entidade"
|
msgstr "Entidade"
|
||||||
|
|
||||||
#: apps/transactions/models.py:288 apps/transactions/models.py:967
|
#: apps/transactions/models.py:289 apps/transactions/models.py:971
|
||||||
#: templates/calendar_view/fragments/list.html:42
|
#: templates/calendar_view/fragments/list.html:42
|
||||||
#: templates/calendar_view/fragments/list.html:44
|
#: templates/calendar_view/fragments/list.html:44
|
||||||
#: templates/calendar_view/fragments/list.html:52
|
#: templates/calendar_view/fragments/list.html:52
|
||||||
@@ -1498,7 +1502,7 @@ msgstr "Entidade"
|
|||||||
msgid "Income"
|
msgid "Income"
|
||||||
msgstr "Renda"
|
msgstr "Renda"
|
||||||
|
|
||||||
#: apps/transactions/models.py:289 apps/transactions/models.py:968
|
#: apps/transactions/models.py:290 apps/transactions/models.py:972
|
||||||
#: templates/calendar_view/fragments/list.html:46
|
#: templates/calendar_view/fragments/list.html:46
|
||||||
#: templates/calendar_view/fragments/list.html:48
|
#: templates/calendar_view/fragments/list.html:48
|
||||||
#: templates/calendar_view/fragments/list.html:56
|
#: templates/calendar_view/fragments/list.html:56
|
||||||
@@ -1509,129 +1513,129 @@ msgstr "Renda"
|
|||||||
msgid "Expense"
|
msgid "Expense"
|
||||||
msgstr "Despesa"
|
msgstr "Despesa"
|
||||||
|
|
||||||
#: apps/transactions/models.py:344 apps/transactions/models.py:578
|
#: apps/transactions/models.py:345 apps/transactions/models.py:582
|
||||||
msgid "Installment Plan"
|
msgid "Installment Plan"
|
||||||
msgstr "Parcelamento"
|
msgstr "Parcelamento"
|
||||||
|
|
||||||
#: apps/transactions/models.py:353 apps/transactions/models.py:802
|
#: apps/transactions/models.py:354 apps/transactions/models.py:806
|
||||||
msgid "Recurring Transaction"
|
msgid "Recurring Transaction"
|
||||||
msgstr "Transação Recorrente"
|
msgstr "Transação Recorrente"
|
||||||
|
|
||||||
#: apps/transactions/models.py:361
|
#: apps/transactions/models.py:362
|
||||||
msgid "Deleted"
|
msgid "Deleted"
|
||||||
msgstr "Apagado"
|
msgstr "Apagado"
|
||||||
|
|
||||||
#: apps/transactions/models.py:366
|
#: apps/transactions/models.py:367
|
||||||
msgid "Deleted At"
|
msgid "Deleted At"
|
||||||
msgstr "Apagado Em"
|
msgstr "Apagado Em"
|
||||||
|
|
||||||
#: apps/transactions/models.py:458 templates/tags/fragments/table.html:71
|
#: apps/transactions/models.py:462 templates/tags/fragments/table.html:71
|
||||||
msgid "No tags"
|
msgid "No tags"
|
||||||
msgstr "Nenhuma tag"
|
msgstr "Nenhuma tag"
|
||||||
|
|
||||||
#: apps/transactions/models.py:460
|
#: apps/transactions/models.py:464
|
||||||
msgid "No category"
|
msgid "No category"
|
||||||
msgstr "Sem categoria"
|
msgstr "Sem categoria"
|
||||||
|
|
||||||
#: apps/transactions/models.py:462
|
#: apps/transactions/models.py:466
|
||||||
msgid "No description"
|
msgid "No description"
|
||||||
msgstr "Sem descrição"
|
msgstr "Sem descrição"
|
||||||
|
|
||||||
#: apps/transactions/models.py:510 templates/includes/sidebar.html:67
|
#: apps/transactions/models.py:514 templates/includes/sidebar.html:59
|
||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr "Anual"
|
msgstr "Anual"
|
||||||
|
|
||||||
#: apps/transactions/models.py:511 apps/users/models.py:464
|
#: apps/transactions/models.py:515 apps/users/models.py:464
|
||||||
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:61
|
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:53
|
||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr "Mensal"
|
msgstr "Mensal"
|
||||||
|
|
||||||
#: apps/transactions/models.py:512
|
#: apps/transactions/models.py:516
|
||||||
msgid "Weekly"
|
msgid "Weekly"
|
||||||
msgstr "Semanal"
|
msgstr "Semanal"
|
||||||
|
|
||||||
#: apps/transactions/models.py:513
|
#: apps/transactions/models.py:517
|
||||||
msgid "Daily"
|
msgid "Daily"
|
||||||
msgstr "Diária"
|
msgstr "Diária"
|
||||||
|
|
||||||
#: apps/transactions/models.py:526
|
#: apps/transactions/models.py:530
|
||||||
msgid "Number of Installments"
|
msgid "Number of Installments"
|
||||||
msgstr "Número de Parcelas"
|
msgstr "Número de Parcelas"
|
||||||
|
|
||||||
#: apps/transactions/models.py:531
|
#: apps/transactions/models.py:535
|
||||||
msgid "Installment Start"
|
msgid "Installment Start"
|
||||||
msgstr "Parcela inicial"
|
msgstr "Parcela inicial"
|
||||||
|
|
||||||
#: apps/transactions/models.py:532
|
#: apps/transactions/models.py:536
|
||||||
msgid "The installment number to start counting from"
|
msgid "The installment number to start counting from"
|
||||||
msgstr "O número da parcela a partir do qual se inicia a contagem"
|
msgstr "O número da parcela a partir do qual se inicia a contagem"
|
||||||
|
|
||||||
#: apps/transactions/models.py:537 apps/transactions/models.py:772
|
#: apps/transactions/models.py:541 apps/transactions/models.py:776
|
||||||
msgid "Start Date"
|
msgid "Start Date"
|
||||||
msgstr "Data de Início"
|
msgstr "Data de Início"
|
||||||
|
|
||||||
#: apps/transactions/models.py:541 apps/transactions/models.py:773
|
#: apps/transactions/models.py:545 apps/transactions/models.py:777
|
||||||
msgid "End Date"
|
msgid "End Date"
|
||||||
msgstr "Data Final"
|
msgstr "Data Final"
|
||||||
|
|
||||||
#: apps/transactions/models.py:546
|
#: apps/transactions/models.py:550
|
||||||
msgid "Recurrence"
|
msgid "Recurrence"
|
||||||
msgstr "Recorrência"
|
msgstr "Recorrência"
|
||||||
|
|
||||||
#: apps/transactions/models.py:549
|
#: apps/transactions/models.py:553
|
||||||
msgid "Installment Amount"
|
msgid "Installment Amount"
|
||||||
msgstr "Valor da Parcela"
|
msgstr "Valor da Parcela"
|
||||||
|
|
||||||
#: apps/transactions/models.py:568 apps/transactions/models.py:792
|
#: apps/transactions/models.py:572 apps/transactions/models.py:796
|
||||||
msgid "Add description to transactions"
|
msgid "Add description to transactions"
|
||||||
msgstr "Adicionar descrição às transações"
|
msgstr "Adicionar descrição às transações"
|
||||||
|
|
||||||
#: apps/transactions/models.py:571 apps/transactions/models.py:795
|
#: apps/transactions/models.py:575 apps/transactions/models.py:799
|
||||||
msgid "Add notes to transactions"
|
msgid "Add notes to transactions"
|
||||||
msgstr "Adicionar notas às transações"
|
msgstr "Adicionar notas às transações"
|
||||||
|
|
||||||
#: apps/transactions/models.py:731
|
#: apps/transactions/models.py:735
|
||||||
msgid "day(s)"
|
msgid "day(s)"
|
||||||
msgstr "dia(s)"
|
msgstr "dia(s)"
|
||||||
|
|
||||||
#: apps/transactions/models.py:732
|
#: apps/transactions/models.py:736
|
||||||
msgid "week(s)"
|
msgid "week(s)"
|
||||||
msgstr "semana(s)"
|
msgstr "semana(s)"
|
||||||
|
|
||||||
#: apps/transactions/models.py:733
|
#: apps/transactions/models.py:737
|
||||||
msgid "month(s)"
|
msgid "month(s)"
|
||||||
msgstr "mês(es)"
|
msgstr "mês(es)"
|
||||||
|
|
||||||
#: apps/transactions/models.py:734
|
#: apps/transactions/models.py:738
|
||||||
msgid "year(s)"
|
msgid "year(s)"
|
||||||
msgstr "ano(s)"
|
msgstr "ano(s)"
|
||||||
|
|
||||||
#: apps/transactions/models.py:736
|
#: apps/transactions/models.py:740
|
||||||
#: templates/recurring_transactions/fragments/list.html:24
|
#: templates/recurring_transactions/fragments/list.html:24
|
||||||
msgid "Paused"
|
msgid "Paused"
|
||||||
msgstr "Pausado"
|
msgstr "Pausado"
|
||||||
|
|
||||||
#: apps/transactions/models.py:775
|
#: apps/transactions/models.py:779
|
||||||
msgid "Recurrence Type"
|
msgid "Recurrence Type"
|
||||||
msgstr "Tipo de recorrência"
|
msgstr "Tipo de recorrência"
|
||||||
|
|
||||||
#: apps/transactions/models.py:778
|
#: apps/transactions/models.py:782
|
||||||
msgid "Recurrence Interval"
|
msgid "Recurrence Interval"
|
||||||
msgstr "Intervalo de recorrência"
|
msgstr "Intervalo de recorrência"
|
||||||
|
|
||||||
#: apps/transactions/models.py:781
|
#: apps/transactions/models.py:785
|
||||||
msgid "Keep at most"
|
msgid "Keep at most"
|
||||||
msgstr "Manter no máximo"
|
msgstr "Manter no máximo"
|
||||||
|
|
||||||
#: apps/transactions/models.py:785
|
#: apps/transactions/models.py:789
|
||||||
msgid "Last Generated Date"
|
msgid "Last Generated Date"
|
||||||
msgstr "Última data gerada"
|
msgstr "Última data gerada"
|
||||||
|
|
||||||
#: apps/transactions/models.py:788
|
#: apps/transactions/models.py:792
|
||||||
msgid "Last Generated Reference Date"
|
msgid "Last Generated Reference Date"
|
||||||
msgstr "Última data de referência gerada"
|
msgstr "Última data de referência gerada"
|
||||||
|
|
||||||
#: apps/transactions/models.py:1034
|
#: apps/transactions/models.py:1038
|
||||||
#: apps/transactions/views/quick_transactions.py:177
|
#: apps/transactions/views/quick_transactions.py:177
|
||||||
#: apps/transactions/views/quick_transactions.py:186
|
#: apps/transactions/views/quick_transactions.py:186
|
||||||
#: apps/transactions/views/quick_transactions.py:188
|
#: apps/transactions/views/quick_transactions.py:188
|
||||||
@@ -1640,8 +1644,8 @@ msgstr "Última data de referência gerada"
|
|||||||
msgid "Quick Transaction"
|
msgid "Quick Transaction"
|
||||||
msgstr "Transação Rápida"
|
msgstr "Transação Rápida"
|
||||||
|
|
||||||
#: apps/transactions/models.py:1035 templates/includes/navbar.html:73
|
#: apps/transactions/models.py:1039 templates/includes/navbar.html:73
|
||||||
#: templates/includes/sidebar.html:108
|
#: templates/includes/sidebar.html:100
|
||||||
#: templates/quick_transactions/pages/index.html:5
|
#: templates/quick_transactions/pages/index.html:5
|
||||||
#: templates/quick_transactions/pages/index.html:11
|
#: templates/quick_transactions/pages/index.html:11
|
||||||
msgid "Quick Transactions"
|
msgid "Quick Transactions"
|
||||||
@@ -1965,7 +1969,7 @@ msgid "All Transactions"
|
|||||||
msgstr "Todas as transações"
|
msgstr "Todas as transações"
|
||||||
|
|
||||||
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
||||||
#: templates/includes/sidebar.html:73
|
#: templates/includes/sidebar.html:65
|
||||||
msgid "Calendar"
|
msgid "Calendar"
|
||||||
msgstr "Calendário"
|
msgstr "Calendário"
|
||||||
|
|
||||||
@@ -2077,6 +2081,7 @@ msgstr "Editar"
|
|||||||
#: templates/quick_transactions/fragments/list.html:34
|
#: templates/quick_transactions/fragments/list.html:34
|
||||||
#: templates/recurring_transactions/fragments/table.html:93
|
#: templates/recurring_transactions/fragments/table.html:93
|
||||||
#: templates/rules/fragments/list.html:45
|
#: templates/rules/fragments/list.html:45
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:61
|
#: templates/rules/fragments/transaction_rule/view.html:61
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:96
|
#: templates/rules/fragments/transaction_rule/view.html:96
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:137
|
#: templates/rules/fragments/transaction_rule/view.html:137
|
||||||
@@ -2202,6 +2207,8 @@ msgid "Current balance"
|
|||||||
msgstr "Saldo atual"
|
msgstr "Saldo atual"
|
||||||
|
|
||||||
#: templates/accounts/fragments/account_reconciliation.html:39
|
#: templates/accounts/fragments/account_reconciliation.html:39
|
||||||
|
#: templates/net_worth/net_worth.html:105
|
||||||
|
#: templates/net_worth/net_worth.html:362
|
||||||
msgid "Difference"
|
msgid "Difference"
|
||||||
msgstr "Diferença"
|
msgstr "Diferença"
|
||||||
|
|
||||||
@@ -2296,7 +2303,7 @@ msgid "Pick a month"
|
|||||||
msgstr "Escolha um mês"
|
msgstr "Escolha um mês"
|
||||||
|
|
||||||
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
||||||
#: templates/includes/sidebar.html:53
|
#: templates/includes/sidebar.html:45
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Fechar"
|
msgstr "Fechar"
|
||||||
|
|
||||||
@@ -2577,19 +2584,19 @@ msgstr "Preço atual"
|
|||||||
msgid "Amount Bought"
|
msgid "Amount Bought"
|
||||||
msgstr "Quantia comprada"
|
msgstr "Quantia comprada"
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:390
|
#: templates/dca/fragments/strategy/details.html:392
|
||||||
msgid "Entry Price vs Current Price"
|
msgid "Entry Price vs Current Price"
|
||||||
msgstr "Preço de Entrada vs Preço Atual"
|
msgstr "Preço de Entrada vs Preço Atual"
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:406
|
#: templates/dca/fragments/strategy/details.html:408
|
||||||
msgid "Days Between Investments"
|
msgid "Days Between Investments"
|
||||||
msgstr "Dias entre investimentos"
|
msgstr "Dias entre investimentos"
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:453
|
#: templates/dca/fragments/strategy/details.html:455
|
||||||
msgid "Investment Frequency"
|
msgid "Investment Frequency"
|
||||||
msgstr "Frequência de Investimento"
|
msgstr "Frequência de Investimento"
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:455
|
#: templates/dca/fragments/strategy/details.html:457
|
||||||
msgid "The straighter the blue line, the more consistent your DCA strategy is."
|
msgid "The straighter the blue line, the more consistent your DCA strategy is."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Quanto mais reta for a linha azul, mais consistente é sua estratégia de CMP."
|
"Quanto mais reta for a linha azul, mais consistente é sua estratégia de CMP."
|
||||||
@@ -2630,7 +2637,7 @@ msgid "Edit exchange rate"
|
|||||||
msgstr "Editar taxa de câmbio"
|
msgstr "Editar taxa de câmbio"
|
||||||
|
|
||||||
#: templates/exchange_rates/fragments/list.html:25
|
#: templates/exchange_rates/fragments/list.html:25
|
||||||
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:93
|
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:85
|
||||||
#: templates/installment_plans/fragments/list.html:21
|
#: templates/installment_plans/fragments/list.html:21
|
||||||
#: templates/yearly_overview/pages/overview_by_account.html:105
|
#: templates/yearly_overview/pages/overview_by_account.html:105
|
||||||
#: templates/yearly_overview/pages/overview_by_currency.html:107
|
#: templates/yearly_overview/pages/overview_by_currency.html:107
|
||||||
@@ -2687,7 +2694,7 @@ msgid "No services configured"
|
|||||||
msgstr "Nenhum serviço configurado"
|
msgstr "Nenhum serviço configurado"
|
||||||
|
|
||||||
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
|
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
|
||||||
#: templates/includes/sidebar.html:247
|
#: templates/includes/sidebar.html:239
|
||||||
msgid "Export and Restore"
|
msgid "Export and Restore"
|
||||||
msgstr "Exportar e Restaurar"
|
msgstr "Exportar e Restaurar"
|
||||||
|
|
||||||
@@ -2786,72 +2793,72 @@ msgstr "Alternar navegação"
|
|||||||
msgid "Overview"
|
msgid "Overview"
|
||||||
msgstr "Visão Geral"
|
msgstr "Visão Geral"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
|
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:77
|
||||||
msgid "Net Worth"
|
msgid "Net Worth"
|
||||||
msgstr "Patrimônio"
|
msgstr "Patrimônio"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:45
|
#: templates/includes/navbar.html:45
|
||||||
#: templates/insights/fragments/category_overview/index.html:65
|
#: templates/insights/fragments/category_overview/index.html:65
|
||||||
#: templates/net_worth/net_worth.html:22
|
#: templates/net_worth/net_worth.html:23
|
||||||
msgid "Current"
|
msgid "Current"
|
||||||
msgstr "Atual"
|
msgstr "Atual"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:79
|
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:71
|
||||||
#: templates/insights/pages/index.html:5
|
#: templates/insights/pages/index.html:5
|
||||||
msgid "Insights"
|
msgid "Insights"
|
||||||
msgstr "Insights"
|
msgstr "Insights"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
|
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:93
|
||||||
msgid "Trash Can"
|
msgid "Trash Can"
|
||||||
msgstr "Lixeira"
|
msgstr "Lixeira"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
|
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:118
|
||||||
msgid "Tools"
|
msgid "Tools"
|
||||||
msgstr "Ferramentas"
|
msgstr "Ferramentas"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:128
|
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:120
|
||||||
msgid "Dollar Cost Average Tracker"
|
msgid "Dollar Cost Average Tracker"
|
||||||
msgstr "Rastreador de Custo Médio Ponderado"
|
msgstr "Rastreador de Custo Médio Ponderado"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:134
|
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:126
|
||||||
#: templates/mini_tools/unit_price_calculator.html:5
|
#: templates/mini_tools/unit_price_calculator.html:5
|
||||||
#: templates/mini_tools/unit_price_calculator.html:10
|
#: templates/mini_tools/unit_price_calculator.html:10
|
||||||
msgid "Unit Price Calculator"
|
msgid "Unit Price Calculator"
|
||||||
msgstr "Calculadora de preço unitário"
|
msgstr "Calculadora de preço unitário"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:140
|
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:132
|
||||||
#: templates/mini_tools/currency_converter/currency_converter.html:8
|
#: templates/mini_tools/currency_converter/currency_converter.html:8
|
||||||
#: templates/mini_tools/currency_converter/currency_converter.html:15
|
#: templates/mini_tools/currency_converter/currency_converter.html:15
|
||||||
msgid "Currency Converter"
|
msgid "Currency Converter"
|
||||||
msgstr "Conversor de Moeda"
|
msgstr "Conversor de Moeda"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
|
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:150
|
||||||
#: templates/includes/sidebar.html:171
|
#: templates/includes/sidebar.html:163
|
||||||
msgid "Management"
|
msgid "Management"
|
||||||
msgstr "Gerenciar"
|
msgstr "Gerenciar"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
|
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:224
|
||||||
msgid "Automation"
|
msgid "Automation"
|
||||||
msgstr "Automação"
|
msgstr "Automação"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
|
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:253
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "Admin"
|
msgstr "Admin"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:270
|
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:262
|
||||||
msgid "Only use this if you know what you're doing"
|
msgid "Only use this if you know what you're doing"
|
||||||
msgstr "Só use isso se você souber o que está fazendo"
|
msgstr "Só use isso se você souber o que está fazendo"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
|
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:261
|
||||||
msgid "Django Admin"
|
msgid "Django Admin"
|
||||||
msgstr "Django Admin"
|
msgstr "Django Admin"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
|
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:276
|
||||||
msgid "is available"
|
msgid "is available"
|
||||||
msgstr "está disponível"
|
msgstr "está disponível"
|
||||||
|
|
||||||
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
||||||
#: templates/includes/sidebar.html:290
|
#: templates/includes/sidebar.html:282
|
||||||
msgid "Calculator"
|
msgid "Calculator"
|
||||||
msgstr "Calculadora"
|
msgstr "Calculadora"
|
||||||
|
|
||||||
@@ -3184,25 +3191,29 @@ msgstr "Filtrar transações"
|
|||||||
msgid "Order by"
|
msgid "Order by"
|
||||||
msgstr "Ordernar por"
|
msgstr "Ordernar por"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:40
|
#: templates/net_worth/net_worth.html:42
|
||||||
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
||||||
msgid "By currency"
|
msgid "By currency"
|
||||||
msgstr "Por moeda"
|
msgstr "Por moeda"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:75
|
#: templates/net_worth/net_worth.html:78
|
||||||
msgid "Consolidated"
|
msgid "Consolidated"
|
||||||
msgstr "Consolidado"
|
msgstr "Consolidado"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:104
|
#: templates/net_worth/net_worth.html:101
|
||||||
|
msgid "Evolution"
|
||||||
|
msgstr "Evolução"
|
||||||
|
|
||||||
|
#: templates/net_worth/net_worth.html:128
|
||||||
#: templates/yearly_overview/pages/overview_by_account.html:7
|
#: templates/yearly_overview/pages/overview_by_account.html:7
|
||||||
msgid "By account"
|
msgid "By account"
|
||||||
msgstr "Por conta"
|
msgstr "Por conta"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:211
|
#: templates/net_worth/net_worth.html:236
|
||||||
msgid "Evolution by currency"
|
msgid "Evolution by currency"
|
||||||
msgstr "Evolução por moeda"
|
msgstr "Evolução por moeda"
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:275
|
#: templates/net_worth/net_worth.html:300
|
||||||
msgid "Evolution by account"
|
msgid "Evolution by account"
|
||||||
msgstr "Evolução por conta"
|
msgstr "Evolução por conta"
|
||||||
|
|
||||||
@@ -3302,11 +3313,9 @@ msgid "Add transaction rule"
|
|||||||
msgstr "Adicionar regra de transação"
|
msgstr "Adicionar regra de transação"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
#: templates/rules/fragments/transaction_rule/view.html:127
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
msgid "Create"
|
||||||
#: templates/rules/fragments/transaction_rule/edit.html:5
|
msgstr "Criar"
|
||||||
msgid "Edit transaction rule"
|
|
||||||
msgstr "Editar regra de transação"
|
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:8
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:8
|
||||||
msgid "Visual"
|
msgid "Visual"
|
||||||
@@ -3347,6 +3356,10 @@ msgstr "para"
|
|||||||
msgid "No transaction found, a new one will be created"
|
msgid "No transaction found, a new one will be created"
|
||||||
msgstr "Nenhuma transação encontrada, uma nova será criada"
|
msgstr "Nenhuma transação encontrada, uma nova será criada"
|
||||||
|
|
||||||
|
#: templates/rules/fragments/transaction_rule/edit.html:5
|
||||||
|
msgid "Edit transaction rule"
|
||||||
|
msgstr "Editar regra de transação"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/transaction_rule_action/add.html:5
|
#: templates/rules/fragments/transaction_rule/transaction_rule_action/add.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/update_or_create_transaction_rule_action/add.html:5
|
#: templates/rules/fragments/transaction_rule/update_or_create_transaction_rule_action/add.html:5
|
||||||
msgid "Add action to transaction rule"
|
msgid "Add action to transaction rule"
|
||||||
@@ -3377,10 +3390,6 @@ msgstr "Edite para ver"
|
|||||||
msgid "This rule has no actions"
|
msgid "This rule has no actions"
|
||||||
msgstr "Essa regra não tem ações"
|
msgstr "Essa regra não tem ações"
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:127
|
|
||||||
msgid "Create"
|
|
||||||
msgstr "Criar"
|
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:144
|
#: templates/rules/fragments/transaction_rule/view.html:144
|
||||||
msgid "Add new"
|
msgid "Add new"
|
||||||
msgstr "Adicionar novo"
|
msgstr "Adicionar novo"
|
||||||
|
|||||||
+152
-143
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-09-07 13:08+0000\n"
|
"POT-Creation-Date: 2025-09-20 14:08+0000\n"
|
||||||
"PO-Revision-Date: 2025-04-14 06:16+0000\n"
|
"PO-Revision-Date: 2025-04-14 06:16+0000\n"
|
||||||
"Last-Translator: Emil <emil.bjorkroth@gmail.com>\n"
|
"Last-Translator: Emil <emil.bjorkroth@gmail.com>\n"
|
||||||
"Language-Team: Swedish <https://translations.herculino.com/projects/wygiwyh/"
|
"Language-Team: Swedish <https://translations.herculino.com/projects/wygiwyh/"
|
||||||
@@ -23,7 +23,7 @@ msgstr ""
|
|||||||
msgid "Group name"
|
msgid "Group name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/accounts/forms.py:42 apps/accounts/forms.py:118
|
#: apps/accounts/forms.py:42 apps/accounts/forms.py:112
|
||||||
#: apps/currencies/forms.py:55 apps/currencies/forms.py:93
|
#: 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/currencies/forms.py:146 apps/dca/forms.py:49 apps/dca/forms.py:224
|
||||||
#: apps/import_app/forms.py:34 apps/rules/forms.py:57 apps/rules/forms.py:101
|
#: apps/import_app/forms.py:34 apps/rules/forms.py:57 apps/rules/forms.py:101
|
||||||
@@ -33,11 +33,12 @@ msgstr ""
|
|||||||
#: apps/transactions/forms.py:953 apps/transactions/forms.py:988
|
#: apps/transactions/forms.py:953 apps/transactions/forms.py:988
|
||||||
#: apps/transactions/forms.py:1142 apps/users/forms.py:217
|
#: apps/transactions/forms.py:1142 apps/users/forms.py:217
|
||||||
#: apps/users/forms.py:379
|
#: apps/users/forms.py:379
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:132
|
#: templates/rules/fragments/transaction_rule/view.html:132
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "Uppdatera"
|
msgstr "Uppdatera"
|
||||||
|
|
||||||
#: apps/accounts/forms.py:50 apps/accounts/forms.py:126
|
#: apps/accounts/forms.py:50 apps/accounts/forms.py:120
|
||||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
||||||
#: apps/currencies/forms.py:101 apps/currencies/forms.py:154
|
#: apps/currencies/forms.py:101 apps/currencies/forms.py:154
|
||||||
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
|
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
|
||||||
@@ -71,35 +72,35 @@ msgstr ""
|
|||||||
msgid "Group"
|
msgid "Group"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/accounts/forms.py:135
|
#: apps/accounts/forms.py:129
|
||||||
msgid "New balance"
|
msgid "New balance"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/accounts/forms.py:141 apps/dca/forms.py:85 apps/dca/forms.py:92
|
#: apps/accounts/forms.py:135 apps/dca/forms.py:85 apps/dca/forms.py:92
|
||||||
#: apps/insights/forms.py:118 apps/rules/forms.py:185 apps/rules/forms.py:201
|
#: apps/insights/forms.py:118 apps/rules/forms.py:185 apps/rules/forms.py:201
|
||||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:263
|
#: apps/transactions/forms.py:44 apps/transactions/forms.py:263
|
||||||
#: apps/transactions/forms.py:438 apps/transactions/forms.py:540
|
#: apps/transactions/forms.py:438 apps/transactions/forms.py:540
|
||||||
#: apps/transactions/forms.py:547 apps/transactions/forms.py:759
|
#: apps/transactions/forms.py:547 apps/transactions/forms.py:759
|
||||||
#: apps/transactions/forms.py:1020 apps/transactions/models.py:322
|
#: apps/transactions/forms.py:1020 apps/transactions/models.py:323
|
||||||
#: apps/transactions/models.py:556 apps/transactions/models.py:756
|
#: apps/transactions/models.py:560 apps/transactions/models.py:760
|
||||||
#: apps/transactions/models.py:1006
|
#: apps/transactions/models.py:1010
|
||||||
#: templates/insights/fragments/category_overview/index.html:78
|
#: templates/insights/fragments/category_overview/index.html:78
|
||||||
#: templates/insights/fragments/category_overview/index.html:530
|
#: templates/insights/fragments/category_overview/index.html:530
|
||||||
msgid "Category"
|
msgid "Category"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/accounts/forms.py:148 apps/dca/forms.py:101 apps/dca/forms.py:109
|
#: apps/accounts/forms.py:142 apps/dca/forms.py:101 apps/dca/forms.py:109
|
||||||
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135
|
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135
|
||||||
#: apps/rules/forms.py:188 apps/rules/forms.py:198 apps/rules/models.py:45
|
#: apps/rules/forms.py:188 apps/rules/forms.py:198 apps/rules/models.py:45
|
||||||
#: apps/rules/models.py:315 apps/transactions/filters.py:69
|
#: apps/rules/models.py:315 apps/transactions/filters.py:69
|
||||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:271
|
#: apps/transactions/forms.py:52 apps/transactions/forms.py:271
|
||||||
#: apps/transactions/forms.py:446 apps/transactions/forms.py:556
|
#: apps/transactions/forms.py:446 apps/transactions/forms.py:556
|
||||||
#: apps/transactions/forms.py:564 apps/transactions/forms.py:752
|
#: apps/transactions/forms.py:564 apps/transactions/forms.py:752
|
||||||
#: apps/transactions/forms.py:1013 apps/transactions/models.py:328
|
#: apps/transactions/forms.py:1013 apps/transactions/models.py:329
|
||||||
#: apps/transactions/models.py:558 apps/transactions/models.py:760
|
#: apps/transactions/models.py:562 apps/transactions/models.py:764
|
||||||
#: apps/transactions/models.py:1012 templates/includes/navbar.html:111
|
#: apps/transactions/models.py:1016 templates/includes/navbar.html:111
|
||||||
#: templates/includes/sidebar.html:192
|
#: templates/includes/sidebar.html:184
|
||||||
#: templates/insights/fragments/category_overview/index.html:36
|
#: templates/insights/fragments/category_overview/index.html:36
|
||||||
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
||||||
msgid "Tags"
|
msgid "Tags"
|
||||||
@@ -107,8 +108,8 @@ msgstr ""
|
|||||||
|
|
||||||
#: apps/accounts/models.py:12 apps/accounts/models.py:29 apps/dca/models.py:13
|
#: apps/accounts/models.py:12 apps/accounts/models.py:29 apps/dca/models.py:13
|
||||||
#: apps/import_app/models.py:14 apps/rules/models.py:13
|
#: apps/import_app/models.py:14 apps/rules/models.py:13
|
||||||
#: apps/transactions/models.py:214 apps/transactions/models.py:239
|
#: apps/transactions/models.py:215 apps/transactions/models.py:240
|
||||||
#: apps/transactions/models.py:263 apps/transactions/models.py:974
|
#: apps/transactions/models.py:264 apps/transactions/models.py:978
|
||||||
#: templates/account_groups/fragments/list.html:25
|
#: templates/account_groups/fragments/list.html:25
|
||||||
#: templates/accounts/fragments/list.html:25
|
#: templates/accounts/fragments/list.html:25
|
||||||
#: templates/categories/fragments/table.html:16
|
#: templates/categories/fragments/table.html:16
|
||||||
@@ -131,7 +132,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
||||||
#: templates/account_groups/pages/index.html:4
|
#: templates/account_groups/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:212
|
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:204
|
||||||
msgid "Account Groups"
|
msgid "Account Groups"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -177,9 +178,9 @@ msgstr ""
|
|||||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:283
|
#: apps/transactions/forms.py:64 apps/transactions/forms.py:283
|
||||||
#: apps/transactions/forms.py:405 apps/transactions/forms.py:744
|
#: apps/transactions/forms.py:405 apps/transactions/forms.py:744
|
||||||
#: apps/transactions/forms.py:1005 apps/transactions/models.py:294
|
#: apps/transactions/forms.py:1005 apps/transactions/models.py:295
|
||||||
#: apps/transactions/models.py:516 apps/transactions/models.py:738
|
#: apps/transactions/models.py:520 apps/transactions/models.py:742
|
||||||
#: apps/transactions/models.py:980
|
#: apps/transactions/models.py:984
|
||||||
#: templates/installment_plans/fragments/table.html:17
|
#: templates/installment_plans/fragments/table.html:17
|
||||||
#: templates/quick_transactions/fragments/list.html:14
|
#: templates/quick_transactions/fragments/list.html:14
|
||||||
#: templates/recurring_transactions/fragments/table.html:19
|
#: templates/recurring_transactions/fragments/table.html:19
|
||||||
@@ -192,8 +193,8 @@ msgstr ""
|
|||||||
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
||||||
#: templates/accounts/fragments/list.html:5
|
#: templates/accounts/fragments/list.html:5
|
||||||
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
||||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
|
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:196
|
||||||
#: templates/includes/sidebar.html:206
|
#: templates/includes/sidebar.html:198
|
||||||
#: templates/monthly_overview/pages/overview.html:94
|
#: templates/monthly_overview/pages/overview.html:94
|
||||||
#: templates/transactions/fragments/summary.html:12
|
#: templates/transactions/fragments/summary.html:12
|
||||||
#: templates/transactions/pages/transactions.html:137
|
#: templates/transactions/pages/transactions.html:137
|
||||||
@@ -496,7 +497,7 @@ msgstr ""
|
|||||||
#: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:180
|
#: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:180
|
||||||
#: apps/rules/forms.py:194 apps/rules/models.py:38 apps/rules/models.py:279
|
#: apps/rules/forms.py:194 apps/rules/models.py:38 apps/rules/models.py:279
|
||||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:410
|
#: apps/transactions/forms.py:68 apps/transactions/forms.py:410
|
||||||
#: apps/transactions/forms.py:568 apps/transactions/models.py:304
|
#: apps/transactions/forms.py:568 apps/transactions/models.py:305
|
||||||
#: templates/dca/fragments/strategy/details.html:52
|
#: templates/dca/fragments/strategy/details.html:52
|
||||||
#: templates/exchange_rates/fragments/table.html:10
|
#: templates/exchange_rates/fragments/table.html:10
|
||||||
#: templates/exchange_rates_services/fragments/table.html:10
|
#: templates/exchange_rates_services/fragments/table.html:10
|
||||||
@@ -519,8 +520,8 @@ msgstr ""
|
|||||||
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60
|
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60
|
||||||
#: templates/currencies/fragments/list.html:5
|
#: templates/currencies/fragments/list.html:5
|
||||||
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
||||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
|
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:210
|
||||||
#: templates/includes/sidebar.html:220
|
#: templates/includes/sidebar.html:212
|
||||||
#: templates/monthly_overview/pages/overview.html:81
|
#: templates/monthly_overview/pages/overview.html:81
|
||||||
#: templates/transactions/fragments/summary.html:8
|
#: templates/transactions/fragments/summary.html:8
|
||||||
#: templates/transactions/pages/transactions.html:124
|
#: templates/transactions/pages/transactions.html:124
|
||||||
@@ -555,7 +556,7 @@ msgstr ""
|
|||||||
#: apps/currencies/models.py:82 apps/export_app/forms.py:68
|
#: apps/currencies/models.py:82 apps/export_app/forms.py:68
|
||||||
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
|
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
|
||||||
#: templates/exchange_rates/pages/index.html:4
|
#: templates/exchange_rates/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:226
|
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:218
|
||||||
msgid "Exchange Rates"
|
msgid "Exchange Rates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -583,8 +584,8 @@ msgstr ""
|
|||||||
msgid "Service Type"
|
msgid "Service Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/currencies/models.py:118 apps/transactions/models.py:218
|
#: apps/currencies/models.py:118 apps/transactions/models.py:219
|
||||||
#: apps/transactions/models.py:242 apps/transactions/models.py:266
|
#: apps/transactions/models.py:243 apps/transactions/models.py:267
|
||||||
#: templates/categories/fragments/list.html:21
|
#: templates/categories/fragments/list.html:21
|
||||||
#: templates/entities/fragments/list.html:21
|
#: templates/entities/fragments/list.html:21
|
||||||
#: templates/recurring_transactions/fragments/list.html:21
|
#: templates/recurring_transactions/fragments/list.html:21
|
||||||
@@ -761,8 +762,8 @@ msgstr ""
|
|||||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:184
|
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:184
|
||||||
#: apps/rules/forms.py:200 apps/rules/models.py:43 apps/rules/models.py:295
|
#: apps/rules/forms.py:200 apps/rules/models.py:43 apps/rules/models.py:295
|
||||||
#: apps/transactions/forms.py:432 apps/transactions/forms.py:584
|
#: apps/transactions/forms.py:432 apps/transactions/forms.py:584
|
||||||
#: apps/transactions/models.py:318 apps/transactions/models.py:565
|
#: apps/transactions/models.py:319 apps/transactions/models.py:569
|
||||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1002
|
#: apps/transactions/models.py:770 apps/transactions/models.py:1006
|
||||||
msgid "Notes"
|
msgid "Notes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -819,15 +820,15 @@ msgid "Entry deleted successfully"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131
|
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131
|
||||||
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:263
|
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:255
|
||||||
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
|
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
||||||
#: apps/transactions/models.py:379 templates/includes/navbar.html:58
|
#: apps/transactions/models.py:380 templates/includes/navbar.html:58
|
||||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
|
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:83
|
||||||
#: templates/includes/sidebar.html:184
|
#: templates/includes/sidebar.html:176
|
||||||
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
||||||
#: templates/recurring_transactions/fragments/table.html:39
|
#: templates/recurring_transactions/fragments/table.html:39
|
||||||
#: templates/transactions/pages/transactions.html:5
|
#: templates/transactions/pages/transactions.html:5
|
||||||
@@ -837,7 +838,7 @@ msgstr ""
|
|||||||
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134
|
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134
|
||||||
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
||||||
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
||||||
#: templates/includes/sidebar.html:186
|
#: templates/includes/sidebar.html:178
|
||||||
msgid "Categories"
|
msgid "Categories"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -846,27 +847,27 @@ msgstr ""
|
|||||||
#: apps/rules/models.py:307 apps/transactions/filters.py:74
|
#: apps/rules/models.py:307 apps/transactions/filters.py:74
|
||||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:279
|
#: apps/transactions/forms.py:60 apps/transactions/forms.py:279
|
||||||
#: apps/transactions/forms.py:454 apps/transactions/forms.py:767
|
#: apps/transactions/forms.py:454 apps/transactions/forms.py:767
|
||||||
#: apps/transactions/forms.py:1028 apps/transactions/models.py:277
|
#: apps/transactions/forms.py:1028 apps/transactions/models.py:278
|
||||||
#: apps/transactions/models.py:333 apps/transactions/models.py:561
|
#: apps/transactions/models.py:334 apps/transactions/models.py:565
|
||||||
#: apps/transactions/models.py:763 apps/transactions/models.py:1017
|
#: apps/transactions/models.py:767 apps/transactions/models.py:1021
|
||||||
#: templates/entities/fragments/list.html:5
|
#: templates/entities/fragments/list.html:5
|
||||||
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
|
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
|
||||||
#: templates/includes/sidebar.html:198
|
#: templates/includes/sidebar.html:190
|
||||||
#: templates/insights/fragments/category_overview/index.html:49
|
#: templates/insights/fragments/category_overview/index.html:49
|
||||||
msgid "Entities"
|
msgid "Entities"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
||||||
#: apps/transactions/models.py:803 templates/includes/navbar.html:77
|
#: apps/transactions/models.py:807 templates/includes/navbar.html:77
|
||||||
#: templates/includes/sidebar.html:120
|
#: templates/includes/sidebar.html:112
|
||||||
#: templates/recurring_transactions/fragments/list.html:5
|
#: templates/recurring_transactions/fragments/list.html:5
|
||||||
#: templates/recurring_transactions/pages/index.html:4
|
#: templates/recurring_transactions/pages/index.html:4
|
||||||
msgid "Recurring Transactions"
|
msgid "Recurring Transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
||||||
#: apps/transactions/models.py:579 templates/includes/navbar.html:75
|
#: apps/transactions/models.py:583 templates/includes/navbar.html:75
|
||||||
#: templates/includes/sidebar.html:114
|
#: templates/includes/sidebar.html:106
|
||||||
#: templates/installment_plans/fragments/list.html:5
|
#: templates/installment_plans/fragments/list.html:5
|
||||||
#: templates/installment_plans/pages/index.html:4
|
#: templates/installment_plans/pages/index.html:4
|
||||||
msgid "Installment Plans"
|
msgid "Installment Plans"
|
||||||
@@ -875,12 +876,12 @@ msgstr ""
|
|||||||
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
||||||
#: templates/exchange_rates_services/fragments/list.html:6
|
#: templates/exchange_rates_services/fragments/list.html:6
|
||||||
#: templates/exchange_rates_services/pages/index.html:4
|
#: templates/exchange_rates_services/pages/index.html:4
|
||||||
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:254
|
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:246
|
||||||
msgid "Automatic Exchange Rates"
|
msgid "Automatic Exchange Rates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135
|
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135
|
||||||
#: templates/includes/sidebar.html:234 templates/rules/fragments/list.html:5
|
#: templates/includes/sidebar.html:226 templates/rules/fragments/list.html:5
|
||||||
#: templates/rules/pages/index.html:4
|
#: templates/rules/pages/index.html:4
|
||||||
msgid "Rules"
|
msgid "Rules"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -950,7 +951,7 @@ msgstr ""
|
|||||||
|
|
||||||
#: apps/import_app/forms.py:61
|
#: apps/import_app/forms.py:61
|
||||||
#: templates/import_app/fragments/profiles/list.html:62
|
#: templates/import_app/fragments/profiles/list.html:62
|
||||||
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:240
|
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:232
|
||||||
msgid "Import"
|
msgid "Import"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1111,15 +1112,15 @@ msgstr ""
|
|||||||
|
|
||||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:36
|
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:36
|
||||||
#: apps/rules/models.py:271 apps/transactions/forms.py:396
|
#: apps/rules/models.py:271 apps/transactions/forms.py:396
|
||||||
#: apps/transactions/models.py:301 apps/transactions/models.py:521
|
#: apps/transactions/models.py:302 apps/transactions/models.py:525
|
||||||
#: apps/transactions/models.py:744 apps/transactions/models.py:987
|
#: apps/transactions/models.py:748 apps/transactions/models.py:991
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:37
|
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:37
|
||||||
#: apps/rules/models.py:275 apps/transactions/filters.py:23
|
#: apps/rules/models.py:275 apps/transactions/filters.py:23
|
||||||
#: apps/transactions/forms.py:400 apps/transactions/models.py:303
|
#: apps/transactions/forms.py:400 apps/transactions/models.py:304
|
||||||
#: apps/transactions/models.py:989 templates/cotton/transaction/item.html:21
|
#: apps/transactions/models.py:993 templates/cotton/transaction/item.html:21
|
||||||
#: templates/cotton/transaction/item.html:32
|
#: templates/cotton/transaction/item.html:32
|
||||||
#: templates/transactions/widgets/paid_toggle_button.html:12
|
#: templates/transactions/widgets/paid_toggle_button.html:12
|
||||||
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:16
|
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:16
|
||||||
@@ -1129,15 +1130,15 @@ msgstr ""
|
|||||||
#: apps/rules/forms.py:181 apps/rules/forms.py:195 apps/rules/models.py:39
|
#: apps/rules/forms.py:181 apps/rules/forms.py:195 apps/rules/models.py:39
|
||||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||||
#: apps/transactions/forms.py:416 apps/transactions/forms.py:571
|
#: apps/transactions/forms.py:416 apps/transactions/forms.py:571
|
||||||
#: apps/transactions/forms.py:773 apps/transactions/models.py:305
|
#: apps/transactions/forms.py:773 apps/transactions/models.py:306
|
||||||
#: apps/transactions/models.py:539 apps/transactions/models.py:768
|
#: apps/transactions/models.py:543 apps/transactions/models.py:772
|
||||||
msgid "Reference Date"
|
msgid "Reference Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:182 apps/rules/forms.py:196 apps/rules/models.py:41
|
#: apps/rules/forms.py:182 apps/rules/forms.py:196 apps/rules/models.py:41
|
||||||
#: apps/rules/models.py:287 apps/transactions/forms.py:423
|
#: apps/rules/models.py:287 apps/transactions/forms.py:423
|
||||||
#: apps/transactions/models.py:311 apps/transactions/models.py:749
|
#: apps/transactions/models.py:312 apps/transactions/models.py:753
|
||||||
#: apps/transactions/models.py:995 templates/insights/fragments/sankey.html:95
|
#: apps/transactions/models.py:999 templates/insights/fragments/sankey.html:95
|
||||||
#: templates/installment_plans/fragments/table.html:18
|
#: templates/installment_plans/fragments/table.html:18
|
||||||
#: templates/quick_transactions/fragments/list.html:15
|
#: templates/quick_transactions/fragments/list.html:15
|
||||||
#: templates/recurring_transactions/fragments/table.html:20
|
#: templates/recurring_transactions/fragments/table.html:20
|
||||||
@@ -1147,27 +1148,27 @@ msgstr ""
|
|||||||
#: apps/rules/forms.py:183 apps/rules/forms.py:197 apps/rules/models.py:14
|
#: apps/rules/forms.py:183 apps/rules/forms.py:197 apps/rules/models.py:14
|
||||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:575
|
#: apps/transactions/forms.py:427 apps/transactions/forms.py:575
|
||||||
#: apps/transactions/models.py:316 apps/transactions/models.py:523
|
#: apps/transactions/models.py:317 apps/transactions/models.py:527
|
||||||
#: apps/transactions/models.py:752 apps/transactions/models.py:1000
|
#: apps/transactions/models.py:756 apps/transactions/models.py:1004
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:186 apps/rules/forms.py:202 apps/rules/models.py:47
|
#: apps/rules/forms.py:186 apps/rules/forms.py:202 apps/rules/models.py:47
|
||||||
#: apps/rules/models.py:299 apps/transactions/models.py:355
|
#: apps/rules/models.py:299 apps/transactions/models.py:356
|
||||||
#: apps/transactions/models.py:1022
|
#: apps/transactions/models.py:1026
|
||||||
msgid "Internal Note"
|
msgid "Internal Note"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:187 apps/rules/forms.py:203 apps/rules/models.py:48
|
#: apps/rules/forms.py:187 apps/rules/forms.py:203 apps/rules/models.py:48
|
||||||
#: apps/rules/models.py:303 apps/transactions/models.py:357
|
#: apps/rules/models.py:303 apps/transactions/models.py:358
|
||||||
#: apps/transactions/models.py:1024
|
#: apps/transactions/models.py:1028
|
||||||
msgid "Internal ID"
|
msgid "Internal ID"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:190 apps/rules/forms.py:204 apps/rules/models.py:40
|
#: apps/rules/forms.py:190 apps/rules/forms.py:204 apps/rules/models.py:40
|
||||||
#: apps/rules/models.py:319 apps/transactions/forms.py:588
|
#: apps/rules/models.py:319 apps/transactions/forms.py:588
|
||||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
#: apps/transactions/models.py:216 apps/transactions/models.py:307
|
||||||
#: apps/transactions/models.py:990
|
#: apps/transactions/models.py:994
|
||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1180,7 +1181,7 @@ msgid "Set Values"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:415 apps/rules/forms.py:452 apps/rules/forms.py:489
|
#: apps/rules/forms.py:415 apps/rules/forms.py:452 apps/rules/forms.py:489
|
||||||
#: apps/transactions/models.py:378
|
#: apps/transactions/models.py:379
|
||||||
msgid "Transaction"
|
msgid "Transaction"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -1189,6 +1190,9 @@ msgid "Type to search for a transaction"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/rules/forms.py:431 apps/rules/forms.py:468 apps/rules/forms.py:504
|
#: apps/rules/forms.py:431 apps/rules/forms.py:468 apps/rules/forms.py:504
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:121
|
#: templates/rules/fragments/transaction_rule/view.html:121
|
||||||
msgid "Test"
|
msgid "Test"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -1314,7 +1318,7 @@ msgstr ""
|
|||||||
#: apps/transactions/filters.py:24 templates/cotton/transaction/item.html:21
|
#: apps/transactions/filters.py:24 templates/cotton/transaction/item.html:21
|
||||||
#: templates/cotton/transaction/item.html:32 templates/includes/navbar.html:47
|
#: templates/cotton/transaction/item.html:32 templates/includes/navbar.html:47
|
||||||
#: templates/insights/fragments/category_overview/index.html:61
|
#: templates/insights/fragments/category_overview/index.html:61
|
||||||
#: templates/net_worth/net_worth.html:32
|
#: templates/net_worth/net_worth.html:33
|
||||||
#: templates/transactions/widgets/paid_toggle_button.html:8
|
#: templates/transactions/widgets/paid_toggle_button.html:8
|
||||||
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:12
|
#: templates/transactions/widgets/unselectable_paid_toggle_button.html:12
|
||||||
msgid "Projected"
|
msgid "Projected"
|
||||||
@@ -1424,40 +1428,40 @@ msgstr ""
|
|||||||
msgid "End date should be after the start date"
|
msgid "End date should be after the start date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:220
|
#: apps/transactions/models.py:221
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated categories won't be able to be selected when creating new "
|
"Deactivated categories won't be able to be selected when creating new "
|
||||||
"transactions"
|
"transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:228
|
#: apps/transactions/models.py:229
|
||||||
msgid "Transaction Category"
|
msgid "Transaction Category"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:229
|
#: apps/transactions/models.py:230
|
||||||
msgid "Transaction Categories"
|
msgid "Transaction Categories"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:244
|
#: apps/transactions/models.py:245
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated tags won't be able to be selected when creating new transactions"
|
"Deactivated tags won't be able to be selected when creating new transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:252 apps/transactions/models.py:253
|
#: apps/transactions/models.py:253 apps/transactions/models.py:254
|
||||||
msgid "Transaction Tags"
|
msgid "Transaction Tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:268
|
#: apps/transactions/models.py:269
|
||||||
msgid ""
|
msgid ""
|
||||||
"Deactivated entities won't be able to be selected when creating new "
|
"Deactivated entities won't be able to be selected when creating new "
|
||||||
"transactions"
|
"transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:276
|
#: apps/transactions/models.py:277
|
||||||
msgid "Entity"
|
msgid "Entity"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:288 apps/transactions/models.py:967
|
#: apps/transactions/models.py:289 apps/transactions/models.py:971
|
||||||
#: templates/calendar_view/fragments/list.html:42
|
#: templates/calendar_view/fragments/list.html:42
|
||||||
#: templates/calendar_view/fragments/list.html:44
|
#: templates/calendar_view/fragments/list.html:44
|
||||||
#: templates/calendar_view/fragments/list.html:52
|
#: templates/calendar_view/fragments/list.html:52
|
||||||
@@ -1469,7 +1473,7 @@ msgstr ""
|
|||||||
msgid "Income"
|
msgid "Income"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:289 apps/transactions/models.py:968
|
#: apps/transactions/models.py:290 apps/transactions/models.py:972
|
||||||
#: templates/calendar_view/fragments/list.html:46
|
#: templates/calendar_view/fragments/list.html:46
|
||||||
#: templates/calendar_view/fragments/list.html:48
|
#: templates/calendar_view/fragments/list.html:48
|
||||||
#: templates/calendar_view/fragments/list.html:56
|
#: templates/calendar_view/fragments/list.html:56
|
||||||
@@ -1480,129 +1484,129 @@ msgstr ""
|
|||||||
msgid "Expense"
|
msgid "Expense"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:344 apps/transactions/models.py:578
|
#: apps/transactions/models.py:345 apps/transactions/models.py:582
|
||||||
msgid "Installment Plan"
|
msgid "Installment Plan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:353 apps/transactions/models.py:802
|
#: apps/transactions/models.py:354 apps/transactions/models.py:806
|
||||||
msgid "Recurring Transaction"
|
msgid "Recurring Transaction"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:361
|
#: apps/transactions/models.py:362
|
||||||
msgid "Deleted"
|
msgid "Deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:366
|
#: apps/transactions/models.py:367
|
||||||
msgid "Deleted At"
|
msgid "Deleted At"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:458 templates/tags/fragments/table.html:71
|
#: apps/transactions/models.py:462 templates/tags/fragments/table.html:71
|
||||||
msgid "No tags"
|
msgid "No tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:460
|
#: apps/transactions/models.py:464
|
||||||
msgid "No category"
|
msgid "No category"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:462
|
#: apps/transactions/models.py:466
|
||||||
msgid "No description"
|
msgid "No description"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:510 templates/includes/sidebar.html:67
|
#: apps/transactions/models.py:514 templates/includes/sidebar.html:59
|
||||||
msgid "Yearly"
|
msgid "Yearly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:511 apps/users/models.py:464
|
#: apps/transactions/models.py:515 apps/users/models.py:464
|
||||||
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:61
|
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:53
|
||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:512
|
#: apps/transactions/models.py:516
|
||||||
msgid "Weekly"
|
msgid "Weekly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:513
|
#: apps/transactions/models.py:517
|
||||||
msgid "Daily"
|
msgid "Daily"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:526
|
#: apps/transactions/models.py:530
|
||||||
msgid "Number of Installments"
|
msgid "Number of Installments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:531
|
#: apps/transactions/models.py:535
|
||||||
msgid "Installment Start"
|
msgid "Installment Start"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:532
|
#: apps/transactions/models.py:536
|
||||||
msgid "The installment number to start counting from"
|
msgid "The installment number to start counting from"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:537 apps/transactions/models.py:772
|
#: apps/transactions/models.py:541 apps/transactions/models.py:776
|
||||||
msgid "Start Date"
|
msgid "Start Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:541 apps/transactions/models.py:773
|
#: apps/transactions/models.py:545 apps/transactions/models.py:777
|
||||||
msgid "End Date"
|
msgid "End Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:546
|
#: apps/transactions/models.py:550
|
||||||
msgid "Recurrence"
|
msgid "Recurrence"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:549
|
#: apps/transactions/models.py:553
|
||||||
msgid "Installment Amount"
|
msgid "Installment Amount"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:568 apps/transactions/models.py:792
|
#: apps/transactions/models.py:572 apps/transactions/models.py:796
|
||||||
msgid "Add description to transactions"
|
msgid "Add description to transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:571 apps/transactions/models.py:795
|
#: apps/transactions/models.py:575 apps/transactions/models.py:799
|
||||||
msgid "Add notes to transactions"
|
msgid "Add notes to transactions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:731
|
#: apps/transactions/models.py:735
|
||||||
msgid "day(s)"
|
msgid "day(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:732
|
#: apps/transactions/models.py:736
|
||||||
msgid "week(s)"
|
msgid "week(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:733
|
#: apps/transactions/models.py:737
|
||||||
msgid "month(s)"
|
msgid "month(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:734
|
#: apps/transactions/models.py:738
|
||||||
msgid "year(s)"
|
msgid "year(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:736
|
#: apps/transactions/models.py:740
|
||||||
#: templates/recurring_transactions/fragments/list.html:24
|
#: templates/recurring_transactions/fragments/list.html:24
|
||||||
msgid "Paused"
|
msgid "Paused"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:775
|
#: apps/transactions/models.py:779
|
||||||
msgid "Recurrence Type"
|
msgid "Recurrence Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:778
|
#: apps/transactions/models.py:782
|
||||||
msgid "Recurrence Interval"
|
msgid "Recurrence Interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:781
|
#: apps/transactions/models.py:785
|
||||||
msgid "Keep at most"
|
msgid "Keep at most"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:785
|
#: apps/transactions/models.py:789
|
||||||
msgid "Last Generated Date"
|
msgid "Last Generated Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:788
|
#: apps/transactions/models.py:792
|
||||||
msgid "Last Generated Reference Date"
|
msgid "Last Generated Reference Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:1034
|
#: apps/transactions/models.py:1038
|
||||||
#: apps/transactions/views/quick_transactions.py:177
|
#: apps/transactions/views/quick_transactions.py:177
|
||||||
#: apps/transactions/views/quick_transactions.py:186
|
#: apps/transactions/views/quick_transactions.py:186
|
||||||
#: apps/transactions/views/quick_transactions.py:188
|
#: apps/transactions/views/quick_transactions.py:188
|
||||||
@@ -1611,8 +1615,8 @@ msgstr ""
|
|||||||
msgid "Quick Transaction"
|
msgid "Quick Transaction"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/transactions/models.py:1035 templates/includes/navbar.html:73
|
#: apps/transactions/models.py:1039 templates/includes/navbar.html:73
|
||||||
#: templates/includes/sidebar.html:108
|
#: templates/includes/sidebar.html:100
|
||||||
#: templates/quick_transactions/pages/index.html:5
|
#: templates/quick_transactions/pages/index.html:5
|
||||||
#: templates/quick_transactions/pages/index.html:11
|
#: templates/quick_transactions/pages/index.html:11
|
||||||
msgid "Quick Transactions"
|
msgid "Quick Transactions"
|
||||||
@@ -1927,7 +1931,7 @@ msgid "All Transactions"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
||||||
#: templates/includes/sidebar.html:73
|
#: templates/includes/sidebar.html:65
|
||||||
msgid "Calendar"
|
msgid "Calendar"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2039,6 +2043,7 @@ msgstr ""
|
|||||||
#: templates/quick_transactions/fragments/list.html:34
|
#: templates/quick_transactions/fragments/list.html:34
|
||||||
#: templates/recurring_transactions/fragments/table.html:93
|
#: templates/recurring_transactions/fragments/table.html:93
|
||||||
#: templates/rules/fragments/list.html:45
|
#: templates/rules/fragments/list.html:45
|
||||||
|
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:61
|
#: templates/rules/fragments/transaction_rule/view.html:61
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:96
|
#: templates/rules/fragments/transaction_rule/view.html:96
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:137
|
#: templates/rules/fragments/transaction_rule/view.html:137
|
||||||
@@ -2164,6 +2169,8 @@ msgid "Current balance"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/accounts/fragments/account_reconciliation.html:39
|
#: templates/accounts/fragments/account_reconciliation.html:39
|
||||||
|
#: templates/net_worth/net_worth.html:105
|
||||||
|
#: templates/net_worth/net_worth.html:362
|
||||||
msgid "Difference"
|
msgid "Difference"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2258,7 +2265,7 @@ msgid "Pick a month"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
||||||
#: templates/includes/sidebar.html:53
|
#: templates/includes/sidebar.html:45
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2539,19 +2546,19 @@ msgstr ""
|
|||||||
msgid "Amount Bought"
|
msgid "Amount Bought"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:390
|
#: templates/dca/fragments/strategy/details.html:392
|
||||||
msgid "Entry Price vs Current Price"
|
msgid "Entry Price vs Current Price"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:406
|
#: templates/dca/fragments/strategy/details.html:408
|
||||||
msgid "Days Between Investments"
|
msgid "Days Between Investments"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:453
|
#: templates/dca/fragments/strategy/details.html:455
|
||||||
msgid "Investment Frequency"
|
msgid "Investment Frequency"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/dca/fragments/strategy/details.html:455
|
#: templates/dca/fragments/strategy/details.html:457
|
||||||
msgid "The straighter the blue line, the more consistent your DCA strategy is."
|
msgid "The straighter the blue line, the more consistent your DCA strategy is."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2591,7 +2598,7 @@ msgid "Edit exchange rate"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/exchange_rates/fragments/list.html:25
|
#: templates/exchange_rates/fragments/list.html:25
|
||||||
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:93
|
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:85
|
||||||
#: templates/installment_plans/fragments/list.html:21
|
#: templates/installment_plans/fragments/list.html:21
|
||||||
#: templates/yearly_overview/pages/overview_by_account.html:105
|
#: templates/yearly_overview/pages/overview_by_account.html:105
|
||||||
#: templates/yearly_overview/pages/overview_by_currency.html:107
|
#: templates/yearly_overview/pages/overview_by_currency.html:107
|
||||||
@@ -2648,7 +2655,7 @@ msgid "No services configured"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
|
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
|
||||||
#: templates/includes/sidebar.html:247
|
#: templates/includes/sidebar.html:239
|
||||||
msgid "Export and Restore"
|
msgid "Export and Restore"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -2745,72 +2752,72 @@ msgstr ""
|
|||||||
msgid "Overview"
|
msgid "Overview"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
|
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:77
|
||||||
msgid "Net Worth"
|
msgid "Net Worth"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:45
|
#: templates/includes/navbar.html:45
|
||||||
#: templates/insights/fragments/category_overview/index.html:65
|
#: templates/insights/fragments/category_overview/index.html:65
|
||||||
#: templates/net_worth/net_worth.html:22
|
#: templates/net_worth/net_worth.html:23
|
||||||
msgid "Current"
|
msgid "Current"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:79
|
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:71
|
||||||
#: templates/insights/pages/index.html:5
|
#: templates/insights/pages/index.html:5
|
||||||
msgid "Insights"
|
msgid "Insights"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
|
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:93
|
||||||
msgid "Trash Can"
|
msgid "Trash Can"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
|
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:118
|
||||||
msgid "Tools"
|
msgid "Tools"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:128
|
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:120
|
||||||
msgid "Dollar Cost Average Tracker"
|
msgid "Dollar Cost Average Tracker"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:134
|
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:126
|
||||||
#: templates/mini_tools/unit_price_calculator.html:5
|
#: templates/mini_tools/unit_price_calculator.html:5
|
||||||
#: templates/mini_tools/unit_price_calculator.html:10
|
#: templates/mini_tools/unit_price_calculator.html:10
|
||||||
msgid "Unit Price Calculator"
|
msgid "Unit Price Calculator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:140
|
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:132
|
||||||
#: templates/mini_tools/currency_converter/currency_converter.html:8
|
#: templates/mini_tools/currency_converter/currency_converter.html:8
|
||||||
#: templates/mini_tools/currency_converter/currency_converter.html:15
|
#: templates/mini_tools/currency_converter/currency_converter.html:15
|
||||||
msgid "Currency Converter"
|
msgid "Currency Converter"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
|
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:150
|
||||||
#: templates/includes/sidebar.html:171
|
#: templates/includes/sidebar.html:163
|
||||||
msgid "Management"
|
msgid "Management"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
|
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:224
|
||||||
msgid "Automation"
|
msgid "Automation"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
|
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:253
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:270
|
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:262
|
||||||
msgid "Only use this if you know what you're doing"
|
msgid "Only use this if you know what you're doing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
|
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:261
|
||||||
msgid "Django Admin"
|
msgid "Django Admin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
|
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:276
|
||||||
msgid "is available"
|
msgid "is available"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
||||||
#: templates/includes/sidebar.html:290
|
#: templates/includes/sidebar.html:282
|
||||||
msgid "Calculator"
|
msgid "Calculator"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3134,25 +3141,29 @@ msgstr ""
|
|||||||
msgid "Order by"
|
msgid "Order by"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:40
|
#: templates/net_worth/net_worth.html:42
|
||||||
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
#: templates/yearly_overview/pages/overview_by_currency.html:9
|
||||||
msgid "By currency"
|
msgid "By currency"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:75
|
#: templates/net_worth/net_worth.html:78
|
||||||
msgid "Consolidated"
|
msgid "Consolidated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:104
|
#: templates/net_worth/net_worth.html:101
|
||||||
|
msgid "Evolution"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/net_worth/net_worth.html:128
|
||||||
#: templates/yearly_overview/pages/overview_by_account.html:7
|
#: templates/yearly_overview/pages/overview_by_account.html:7
|
||||||
msgid "By account"
|
msgid "By account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:211
|
#: templates/net_worth/net_worth.html:236
|
||||||
msgid "Evolution by currency"
|
msgid "Evolution by currency"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/net_worth/net_worth.html:275
|
#: templates/net_worth/net_worth.html:300
|
||||||
msgid "Evolution by account"
|
msgid "Evolution by account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3249,10 +3260,8 @@ msgid "Add transaction rule"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
#: templates/rules/fragments/transaction_rule/dry_run/created.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/deleted.html:5
|
#: templates/rules/fragments/transaction_rule/view.html:127
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
msgid "Create"
|
||||||
#: templates/rules/fragments/transaction_rule/edit.html:5
|
|
||||||
msgid "Edit transaction rule"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:8
|
#: templates/rules/fragments/transaction_rule/dry_run/visual.html:8
|
||||||
@@ -3294,6 +3303,10 @@ msgstr ""
|
|||||||
msgid "No transaction found, a new one will be created"
|
msgid "No transaction found, a new one will be created"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: templates/rules/fragments/transaction_rule/edit.html:5
|
||||||
|
msgid "Edit transaction rule"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/transaction_rule_action/add.html:5
|
#: templates/rules/fragments/transaction_rule/transaction_rule_action/add.html:5
|
||||||
#: templates/rules/fragments/transaction_rule/update_or_create_transaction_rule_action/add.html:5
|
#: templates/rules/fragments/transaction_rule/update_or_create_transaction_rule_action/add.html:5
|
||||||
msgid "Add action to transaction rule"
|
msgid "Add action to transaction rule"
|
||||||
@@ -3324,10 +3337,6 @@ msgstr ""
|
|||||||
msgid "This rule has no actions"
|
msgid "This rule has no actions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:127
|
|
||||||
msgid "Create"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: templates/rules/fragments/transaction_rule/view.html:144
|
#: templates/rules/fragments/transaction_rule/view.html:144
|
||||||
msgid "Add new"
|
msgid "Add new"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
+242
-218
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1 +1,3 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="500" zoomAndPan="magnify" viewBox="0 0 375 374.999991" height="500" preserveAspectRatio="xMidYMid meet" version="1.0"><defs><clipPath id="a2373d79ec"><path d="M 1.980469 1.980469 L 373 1.980469 L 373 373 L 1.980469 373 Z M 1.980469 1.980469 " clip-rule="nonzero"/></clipPath></defs><g clip-path="url(#a2373d79ec)"><path fill="#fbb700" d="M 239.671875 301.757812 L 79.152344 141.238281 L 118.234375 102.152344 L 239.671875 223.589844 L 355.179688 108.078125 C 325.429688 45.34375 261.519531 1.957031 187.472656 1.957031 C 113.375 1.957031 49.433594 45.410156 19.707031 108.210938 L 174.503906 263.003906 L 135.757812 301.757812 L 2.882812 168.878906 C 2.273438 174.996094 1.957031 181.199219 1.957031 187.472656 C 1.957031 289.929688 85.015625 372.988281 187.472656 372.988281 C 289.929688 372.988281 372.988281 289.929688 372.988281 187.472656 C 372.988281 181.347656 372.679688 175.296875 372.101562 169.320312 L 239.671875 301.757812 " fill-opacity="1" fill-rule="nonzero"/></g></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 375 374.999991" version="1.0">
|
||||||
|
<path fill="#000000" d="M 239.671875 301.757812 L 79.152344 141.238281 L 118.234375 102.152344 L 239.671875 223.589844 L 355.179688 108.078125 C 325.429688 45.34375 261.519531 1.957031 187.472656 1.957031 C 113.375 1.957031 49.433594 45.410156 19.707031 108.210938 L 174.503906 263.003906 L 135.757812 301.757812 L 2.882812 168.878906 C 2.273438 174.996094 1.957031 181.199219 1.957031 187.472656 C 1.957031 289.929688 85.015625 372.988281 187.472656 372.988281 C 289.929688 372.988281 372.988281 289.929688 372.988281 187.472656 C 372.988281 181.347656 372.679688 175.296875 372.101562 169.320312 L 239.671875 301.757812 "/>
|
||||||
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 718 B |
@@ -1,78 +1,72 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<c-ui.fab-single-action
|
||||||
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
url="{% url 'account_group_add' %}"
|
||||||
|
hx_target="#generic-offcanvas">
|
||||||
|
</c-ui.fab-single-action>
|
||||||
|
<div class="container">
|
||||||
|
<div class="text-3xl font-bold font-mono w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Account Groups' %}<span>
|
<div>{% translate 'Account Groups' %}</div>
|
||||||
<a class="text-decoration-none tw:text-2xl p-1 category-action"
|
|
||||||
role="button"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-title="{% translate "Add" %}"
|
|
||||||
hx-get="{% url 'account_group_add' %}"
|
|
||||||
hx-target="#generic-offcanvas">
|
|
||||||
<i class="fa-solid fa-circle-plus fa-fw"></i></a>
|
|
||||||
</span></div>
|
|
||||||
{% endspaceless %}
|
{% endspaceless %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card bg-base-100 shadow-xl">
|
||||||
<div class="card-body table-responsive">
|
<div class="card-body">
|
||||||
{% if account_groups %}
|
{% if account_groups %}
|
||||||
<c-config.search></c-config.search>
|
<c-config.search></c-config.search>
|
||||||
<table class="table table-hover">
|
<div class="overflow-x-auto">
|
||||||
<thead>
|
<table class="table table-zebra">
|
||||||
<tr>
|
<thead>
|
||||||
<th scope="col" class="col-auto"></th>
|
<tr>
|
||||||
<th scope="col" class="col">{% translate 'Name' %}</th>
|
<th scope="col" class="table-col-auto"></th>
|
||||||
</tr>
|
<th scope="col">{% translate 'Name' %}</th>
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for account_group in account_groups %}
|
|
||||||
<tr class="account_group">
|
|
||||||
<td class="col-auto">
|
|
||||||
<div class="btn-group" role="group" aria-label="{% translate 'Actions' %}">
|
|
||||||
<a class="btn btn-secondary btn-sm"
|
|
||||||
role="button"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-title="{% translate "Edit" %}"
|
|
||||||
hx-get="{% url 'account_group_edit' pk=account_group.id %}"
|
|
||||||
hx-target="#generic-offcanvas">
|
|
||||||
<i class="fa-solid fa-pencil fa-fw"></i></a>
|
|
||||||
<a class="btn btn-secondary btn-sm text-danger"
|
|
||||||
role="button"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-title="{% translate "Delete" %}"
|
|
||||||
hx-delete="{% url 'account_group_delete' pk=account_group.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>
|
|
||||||
{% if not account_group.owner %}
|
|
||||||
<a class="btn btn-secondary btn-sm text-warning"
|
|
||||||
role="button"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-title="{% translate "Take ownership" %}"
|
|
||||||
hx-get="{% url 'account_group_take_ownership' pk=account_group.id %}">
|
|
||||||
<i class="fa-solid fa-crown fa-fw"></i></a>
|
|
||||||
{% endif %}
|
|
||||||
{% if user == account_group.owner %}
|
|
||||||
<a class="btn btn-secondary btn-sm text-primary"
|
|
||||||
role="button"
|
|
||||||
hx-target="#generic-offcanvas"
|
|
||||||
hx-swap="innerHTML"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-title="{% translate "Share" %}"
|
|
||||||
hx-get="{% url 'account_group_share_settings' pk=account_group.id %}">
|
|
||||||
<i class="fa-solid fa-share fa-fw"></i></a>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<td class="col">{{ account_group.name }}</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for account_group in account_groups %}
|
||||||
|
<tr class="account_group">
|
||||||
|
<td class="table-col-auto">
|
||||||
|
<div class="join" role="group" aria-label="{% translate 'Actions' %}">
|
||||||
|
<a class="btn btn-secondary btn-sm join-item"
|
||||||
|
role="button"
|
||||||
|
data-tippy-content="{% translate "Edit" %}"
|
||||||
|
hx-get="{% url 'account_group_edit' pk=account_group.id %}"
|
||||||
|
hx-target="#generic-offcanvas">
|
||||||
|
<i class="fa-solid fa-pencil fa-fw"></i></a>
|
||||||
|
{% if not account_group.owner %}
|
||||||
|
<a class="btn btn-secondary btn-sm join-item"
|
||||||
|
role="button"
|
||||||
|
data-tippy-content="{% translate "Take ownership" %}"
|
||||||
|
hx-get="{% url 'account_group_take_ownership' pk=account_group.id %}">
|
||||||
|
<i class="fa-solid fa-crown fa-fw"></i></a>
|
||||||
|
{% endif %}
|
||||||
|
{% if user == account_group.owner %}
|
||||||
|
<a class="btn btn-secondary btn-sm join-item"
|
||||||
|
role="button"
|
||||||
|
hx-target="#generic-offcanvas"
|
||||||
|
hx-swap="innerHTML"
|
||||||
|
data-tippy-content="{% translate "Share" %}"
|
||||||
|
hx-get="{% url 'account_group_share_settings' pk=account_group.id %}">
|
||||||
|
<i class="fa-solid fa-share fa-fw"></i></a>
|
||||||
|
{% endif %}
|
||||||
|
<a class="btn btn-error btn-sm join-item"
|
||||||
|
role="button"
|
||||||
|
data-tippy-content="{% translate "Delete" %}"
|
||||||
|
hx-delete="{% url 'account_group_delete' pk=account_group.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>
|
||||||
|
</td>
|
||||||
|
<td>{{ account_group.name }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<c-msg.empty title="{% translate "No account groups" %}" remove-padding></c-msg.empty>
|
<c-msg.empty title="{% translate "No account groups" %}" remove-padding></c-msg.empty>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -9,65 +9,59 @@
|
|||||||
<form hx-post="{% url 'account_reconciliation' %}">
|
<form hx-post="{% url 'account_reconciliation' %}">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{{ form.management_form }}
|
{{ form.management_form }}
|
||||||
<div class="accordion accordion-flush" id="balanceAccordionFlush">
|
<div class="join join-vertical w-full" id="balanceAccordionFlush">
|
||||||
{% for form in form.forms %}
|
{% for form in form.forms %}
|
||||||
<div class="accordion-item">
|
<c-ui.components.collapse>
|
||||||
<h2 class="accordion-header">
|
<c-slot name="title">
|
||||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
|
{% if form.account_group %}<span class="badge badge-primary badge-outline me-2">{{ form.account_group.name }}</span>{% endif %}{{ form.account_name }}
|
||||||
data-bs-target="#flush-collapse-{{ forloop.counter0 }}" aria-expanded="false"
|
</c-slot>
|
||||||
aria-controls="flush-collapseOne">
|
<c-slot name="content">
|
||||||
{% if form.account_group %}<span class="badge text-bg-primary me-2">{{ form.account_group.name }}</span>{% endif %}{{ form.account_name }}
|
<div class="fieldset">
|
||||||
</button>
|
<span class="fieldset-legend">{% translate 'Current balance' %}</span>
|
||||||
</h2>
|
<div data-amount="{{ form.current_balance|floatformat:"-40u" }}"
|
||||||
<div id="flush-collapse-{{ forloop.counter0 }}" class="accordion-collapse collapse">
|
data-decimal-places="{{ form.currency_decimal_places }}"
|
||||||
<div class="accordion-body">
|
id="amount-{{ forloop.counter0 }}" class="text-base">
|
||||||
<div class="mb-3">
|
<c-amount.display
|
||||||
<div class="form-label">
|
:amount="form.current_balance"
|
||||||
{% translate 'Current balance' %}
|
:prefix="form.currency_prefix"
|
||||||
</div>
|
:suffix="form.currency_suffix"
|
||||||
<div data-amount="{{ form.current_balance|floatformat:"-40u" }}"
|
:decimal_places="form.currency_decimal_places"
|
||||||
data-decimal-places="{{ form.currency_decimal_places }}"
|
color="auto"></c-amount.display>
|
||||||
id="amount-{{ forloop.counter0 }}">
|
|
||||||
{% currency_display amount=form.current_balance prefix=form.currency_prefix suffix=form.currency_suffix decimal_places=form.currency_decimal_places %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
{% crispy form %}
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<div class="form-label">
|
|
||||||
{% translate 'Difference' %}
|
|
||||||
</div>
|
|
||||||
<div _="on input from #id_form-{{ forloop.counter0 }}-new_balance
|
|
||||||
set original_amount to parseFloat('{{ form.current_balance|floatformat:"-40u" }}')
|
|
||||||
then set prefix to '{{ form.currency_prefix }}'
|
|
||||||
then set suffix to '{{ form.currency_suffix }}'
|
|
||||||
then set decimal_places to {{ form.currency_decimal_places }}
|
|
||||||
then call parseLocaleNumber(#id_form-{{ forloop.counter0 }}-new_balance.value)
|
|
||||||
then set new_amount to result
|
|
||||||
then set diff to (Math.round((new_amount - original_amount) * Math.pow(10, decimal_places))) / Math.pow(10, decimal_places)
|
|
||||||
then log diff
|
|
||||||
then set format_new_amount to
|
|
||||||
Intl.NumberFormat(
|
|
||||||
undefined,
|
|
||||||
{
|
|
||||||
minimumFractionDigits: decimal_places,
|
|
||||||
maximumFractionDigits: decimal_places,
|
|
||||||
roundingMode: 'trunc'
|
|
||||||
}
|
|
||||||
).format(diff)
|
|
||||||
then set formatted_string to `${prefix}${format_new_amount}${suffix}`
|
|
||||||
then put formatted_string into me if diff else
|
|
||||||
put '-' into me">-</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div>
|
||||||
</div>
|
{% crispy form %}
|
||||||
|
</div>
|
||||||
|
<div class="fieldset">
|
||||||
|
<span class="fieldset-legend">{% translate 'Difference' %}</span>
|
||||||
|
<div class="text-base"
|
||||||
|
_="on input from #id_form-{{ forloop.counter0 }}-new_balance
|
||||||
|
set original_amount to parseFloat('{{ form.current_balance|floatformat:"-40u" }}')
|
||||||
|
then set prefix to '{{ form.currency_prefix }}'
|
||||||
|
then set suffix to '{{ form.currency_suffix }}'
|
||||||
|
then set decimal_places to {{ form.currency_decimal_places }}
|
||||||
|
then call parseLocaleNumber(#id_form-{{ forloop.counter0 }}-new_balance.value)
|
||||||
|
then set new_amount to result
|
||||||
|
then set diff to (Math.round((new_amount - original_amount) * Math.pow(10, decimal_places))) / Math.pow(10, decimal_places)
|
||||||
|
then set format_new_amount to
|
||||||
|
Intl.NumberFormat(
|
||||||
|
undefined,
|
||||||
|
{
|
||||||
|
minimumFractionDigits: decimal_places,
|
||||||
|
maximumFractionDigits: decimal_places,
|
||||||
|
roundingMode: 'trunc'
|
||||||
|
}
|
||||||
|
).format(diff)
|
||||||
|
then set formatted_string to `${prefix}${format_new_amount}${suffix}`
|
||||||
|
then put formatted_string into me if diff else put '-' into me">-</div>
|
||||||
|
</div>
|
||||||
|
</c-slot>
|
||||||
|
</c-ui.components.collapse>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-3">
|
<div class="mt-3">
|
||||||
<div>
|
<div>
|
||||||
<input type="submit" name="submit" value="{% translate 'Reconcile balances' %}" class="btn btn-outline-primary w-100" id="submit-id-submit">
|
<input type="submit" name="submit" value="{% translate 'Reconcile balances' %}" class="btn btn-primary w-full" id="submit-id-submit">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -1,101 +1,96 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<c-ui.fab-single-action
|
||||||
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
url="{% url 'account_add' %}"
|
||||||
|
hx_target="#generic-offcanvas">
|
||||||
|
</c-ui.fab-single-action>
|
||||||
|
<div class="container">
|
||||||
|
<div class="text-3xl font-bold font-mono w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Accounts' %}<span>
|
<div>{% translate 'Accounts' %}</div>
|
||||||
<a class="text-decoration-none tw:text-2xl p-1 category-action"
|
|
||||||
role="button"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-title="{% translate "Add" %}"
|
|
||||||
hx-get="{% url 'account_add' %}"
|
|
||||||
hx-target="#generic-offcanvas">
|
|
||||||
<i class="fa-solid fa-circle-plus fa-fw"></i></a>
|
|
||||||
</span></div>
|
|
||||||
{% endspaceless %}
|
{% endspaceless %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card bg-base-100 shadow-xl">
|
||||||
<div class="card-body table-responsive">
|
<div class="card-body">
|
||||||
{% if accounts %}
|
{% if accounts %}
|
||||||
<c-config.search></c-config.search>
|
<c-config.search></c-config.search>
|
||||||
<table class="table table-hover text-nowrap">
|
<div class="overflow-x-auto">
|
||||||
<thead>
|
<table class="table table-zebra">
|
||||||
<tr>
|
<thead>
|
||||||
<th scope="col" class="col-auto"></th>
|
<tr>
|
||||||
<th scope="col" class="col">{% translate 'Name' %}</th>
|
<th scope="col" class="table-col-auto"></th>
|
||||||
<th scope="col" class="col">{% translate 'Group' %}</th>
|
<th scope="col">{% translate 'Name' %}</th>
|
||||||
<th scope="col" class="col">{% translate 'Currency' %}</th>
|
<th scope="col">{% translate 'Group' %}</th>
|
||||||
<th scope="col" class="col">{% translate 'Exchange Currency' %}</th>
|
<th scope="col">{% translate 'Currency' %}</th>
|
||||||
<th scope="col" class="col">{% translate 'Is Asset' %}</th>
|
<th scope="col">{% translate 'Exchange Currency' %}</th>
|
||||||
<th scope="col" class="col">{% translate 'Archived' %}</th>
|
<th scope="col">{% translate 'Is Asset' %}</th>
|
||||||
</tr>
|
<th scope="col">{% translate 'Archived' %}</th>
|
||||||
</thead>
|
</tr>
|
||||||
<tbody>
|
</thead>
|
||||||
{% for account in accounts %}
|
<tbody>
|
||||||
<tr class="account">
|
{% for account in accounts %}
|
||||||
<td class="col-auto">
|
<tr class="account">
|
||||||
<div class="btn-group" role="group" aria-label="{% translate 'Actions' %}">
|
<td class="table-col-auto">
|
||||||
<a class="btn btn-secondary btn-sm"
|
<div class="join" role="group" aria-label="{% translate 'Actions' %}">
|
||||||
role="button"
|
<a class="btn btn-secondary btn-sm join-item"
|
||||||
data-bs-toggle="tooltip"
|
role="button"
|
||||||
data-bs-title="{% translate "Edit" %}"
|
data-tippy-content="{% translate "Edit" %}"
|
||||||
hx-get="{% url 'account_edit' pk=account.id %}"
|
hx-get="{% url 'account_edit' pk=account.id %}"
|
||||||
hx-target="#generic-offcanvas">
|
hx-target="#generic-offcanvas">
|
||||||
<i class="fa-solid fa-pencil fa-fw"></i></a>
|
<i class="fa-solid fa-pencil fa-fw"></i></a>
|
||||||
<a class="btn btn-secondary btn-sm text-danger"
|
{% if not account.owner %}
|
||||||
role="button"
|
<a class="btn btn-secondary btn-sm join-item"
|
||||||
data-bs-toggle="tooltip"
|
role="button"
|
||||||
data-bs-title="{% translate "Delete" %}"
|
data-tippy-content="{% translate "Take ownership" %}"
|
||||||
hx-delete="{% url 'account_delete' pk=account.id %}"
|
hx-get="{% url 'account_take_ownership' pk=account.id %}">
|
||||||
hx-trigger='confirmed'
|
<i class="fa-solid fa-crown fa-fw"></i></a>
|
||||||
data-bypass-on-ctrl="true"
|
{% endif %}
|
||||||
data-title="{% translate "Are you sure?" %}"
|
{% if user == account.owner %}
|
||||||
data-text="{% translate "You won't be able to revert this!" %}"
|
<a class="btn btn-secondary btn-sm join-item"
|
||||||
data-confirm-text="{% translate "Yes, delete it!" %}"
|
role="button"
|
||||||
_="install prompt_swal"><i class="fa-solid fa-trash fa-fw"></i></a>
|
hx-target="#generic-offcanvas"
|
||||||
{% if not account.owner %}
|
hx-swap="innerHTML"
|
||||||
<a class="btn btn-secondary btn-sm text-primary"
|
data-tippy-content="{% translate "Share" %}"
|
||||||
role="button"
|
hx-get="{% url 'account_share_settings' pk=account.id %}">
|
||||||
data-bs-toggle="tooltip"
|
<i class="fa-solid fa-share fa-fw"></i></a>
|
||||||
data-bs-title="{% translate "Take ownership" %}"
|
{% endif %}
|
||||||
hx-get="{% url 'account_take_ownership' pk=account.id %}">
|
<a class="btn btn-secondary btn-sm join-item"
|
||||||
<i class="fa-solid fa-crown fa-fw"></i></a>
|
role="button"
|
||||||
{% endif %}
|
hx-get="{% url 'account_toggle_untracked' pk=account.id %}"
|
||||||
{% if user == account.owner %}
|
data-tippy-content="
|
||||||
<a class="btn btn-secondary btn-sm text-primary"
|
|
||||||
role="button"
|
{% if account.is_untracked_by %}{% translate "Track" %}{% else %}{% translate "Untrack" %}{% endif %}">
|
||||||
hx-target="#generic-offcanvas"
|
{% if account.is_untracked_by %}
|
||||||
hx-swap="innerHTML"
|
<i class="fa-solid fa-eye fa-fw"></i>
|
||||||
data-bs-toggle="tooltip"
|
{% else %}
|
||||||
data-bs-title="{% translate "Share" %}"
|
<i class="fa-solid fa-eye-slash fa-fw"></i>
|
||||||
hx-get="{% url 'account_share_settings' pk=account.id %}">
|
{% endif %}
|
||||||
<i class="fa-solid fa-share fa-fw"></i></a>
|
</a>
|
||||||
{% endif %}
|
<a class="btn btn-error btn-sm join-item"
|
||||||
<a class="btn btn-secondary btn-sm"
|
role="button"
|
||||||
role="button"
|
data-tippy-content="{% translate "Delete" %}"
|
||||||
hx-get="{% url 'account_toggle_untracked' pk=account.id %}"
|
hx-delete="{% url 'account_delete' pk=account.id %}"
|
||||||
data-bs-toggle="tooltip"
|
hx-trigger='confirmed'
|
||||||
data-bs-title="{% if account.is_untracked_by %}{% translate "Track" %}{% else %}{% translate "Untrack" %}{% endif %}">
|
data-bypass-on-ctrl="true"
|
||||||
{% if account.is_untracked_by %}
|
data-title="{% translate "Are you sure?" %}"
|
||||||
<i class="fa-solid fa-eye fa-fw"></i>
|
data-text="{% translate "You won't be able to revert this!" %}"
|
||||||
{% else %}
|
data-confirm-text="{% translate "Yes, delete it!" %}"
|
||||||
<i class="fa-solid fa-eye-slash fa-fw"></i>
|
_="install prompt_swal"><i class="fa-solid fa-trash fa-fw"></i></a>
|
||||||
{% endif %}
|
</div>
|
||||||
</a>
|
</td>
|
||||||
</div>
|
<td>{{ account.name }}</td>
|
||||||
</td>
|
<td>{{ account.group.name }}</td>
|
||||||
<td class="col">{{ account.name }}</td>
|
<td>{{ account.currency }}</td>
|
||||||
<td class="col">{{ account.group.name }}</td>
|
<td>{% if account.exchange_currency %}{{ account.exchange_currency }}{% else %}-{% endif %}</td>
|
||||||
<td class="col">{{ account.currency }}</td>
|
<td>{% if account.is_asset %}<i class="fa-solid fa-solid fa-check text-success"></i>{% endif %}</td>
|
||||||
<td class="col">{% if account.exchange_currency %}{{ account.exchange_currency }}{% else %}-{% endif %}</td>
|
<td>{% if account.is_archived %}<i class="fa-solid fa-solid fa-check text-success"></i>{% endif %}</td>
|
||||||
<td class="col">{% if account.is_asset %}<i class="fa-solid fa-solid fa-check text-success"></i>{% endif %}</td>
|
</tr>
|
||||||
<td class="col">{% if account.is_archived %}<i class="fa-solid fa-solid fa-check text-success"></i>{% endif %}</td>
|
{% endfor %}
|
||||||
</tr>
|
</tbody>
|
||||||
{% endfor %}
|
</table>
|
||||||
</tbody>
|
</div>
|
||||||
</table>
|
|
||||||
{% else %}
|
{% else %}
|
||||||
<c-msg.empty title="{% translate "No accounts" %}" remove-padding></c-msg.empty>
|
<c-msg.empty title="{% translate "No accounts" %}" remove-padding></c-msg.empty>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,67 +2,67 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<div class="tw:hidden tw:lg:grid tw:lg:grid-cols-7 tw:gap-4 tw:lg:gap-0">
|
<div class="hidden lg:grid lg:grid-cols-7 gap-4 lg:gap-0 bg-base-200">
|
||||||
<div class="border-start border-top border-bottom p-2 text-center">
|
<div class="border-l border-t border-b border-base-300 p-2 text-center">
|
||||||
{% translate 'MON' %}
|
{% translate 'MON' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="border-top border-bottom p-2 text-center">
|
<div class="border-t border-b border-base-300 p-2 text-center">
|
||||||
{% translate 'TUE' %}
|
{% translate 'TUE' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="border-top border-bottom p-2 text-center">
|
<div class="border-t border-b border-base-300 p-2 text-center">
|
||||||
{% translate 'WED' %}
|
{% translate 'WED' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="border-top border-bottom p-2 text-center">
|
<div class="border-t border-b border-base-300 p-2 text-center">
|
||||||
{% translate 'THU' %}
|
{% translate 'THU' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="border-top border-bottom p-2 text-center">
|
<div class="border-t border-b border-base-300 p-2 text-center">
|
||||||
{% translate 'FRI' %}
|
{% translate 'FRI' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="border-top border-bottom p-2 text-center">
|
<div class="border-t border-b border-base-300 p-2 text-center">
|
||||||
{% translate 'SAT' %}
|
{% translate 'SAT' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="border-end border-top border-bottom p-2 text-center">
|
<div class="border-r border-t border-b border-base-300 p-2 text-center">
|
||||||
{% translate 'SUN' %}
|
{% translate 'SUN' %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tw:grid tw:grid-cols-1 tw:grid-rows-1 tw:lg:grid-cols-7 tw:lg:grid-rows-6 tw:gap-4 tw:lg:gap-0">
|
<div class="grid grid-cols-1 grid-rows-1 lg:grid-cols-7 lg:grid-rows-6 gap-4 lg:gap-0">
|
||||||
{% for date in dates %}
|
{% for date in dates %}
|
||||||
{% if date %}
|
{% if date %}
|
||||||
<div class="card h-100 tw:hover:bg-zinc-900! rounded-0{% if not date.transactions %} tw:hidden! tw:lg:flex!{% endif %}{% if today == date.date %} tw:border-yellow-300 border-primary{% endif %} " role="button"
|
<div class="card bg-base-100 h-full hover:bg-base-200! border border-base-content/30 rounded-none {% if not date.transactions %}hidden! lg:flex!{% endif %}{% if today == date.date %} border-2 border-primary{% endif %} cursor-pointer" role="button"
|
||||||
hx-get="{% url 'calendar_transactions_list' day=date.date.day month=date.date.month year=date.date.year %}"
|
hx-get="{% url 'calendar_transactions_list' day=date.date.day month=date.date.month year=date.date.year %}"
|
||||||
hx-target="#persistent-generic-offcanvas-left">
|
hx-target="#persistent-generic-offcanvas-left">
|
||||||
<div class="card-header border-0 bg-transparent text-end tw:flex justify-content-between p-2 w-100">
|
<div class="card-header border-0 bg-transparent text-end flex justify-between p-2 w-full">
|
||||||
<div class="tw:lg:hidden text-start w-100">{{ date.date|date:"l"|lower }}</div>
|
<div class="lg:hidden text-start w-full">{{ date.date|date:"l"|lower }}</div>
|
||||||
<div class="text-end w-100">{{ date.day }}</div>
|
<div class="text-end w-full">{{ date.day }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body p-2">
|
<div class="card-body p-2 flex flex-row flex-wrap gap-1">
|
||||||
{% for transaction in date.transactions %}
|
{% for transaction in date.transactions %}
|
||||||
{% if transaction.is_paid %}
|
{% if transaction.is_paid %}
|
||||||
{% if transaction.type == "IN" and not transaction.account.is_asset %}
|
{% if transaction.type == "IN" and not transaction.account.is_asset %}
|
||||||
<i class="fa-solid fa-circle-check tw:text-green-400" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Income' %}{% endif %}"></i>
|
<i class="fa-solid fa-circle-check text-success" data-tippy-content="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Income' %}{% endif %}"></i>
|
||||||
{% elif transaction.type == "IN" and transaction.account.is_asset %}
|
{% elif transaction.type == "IN" and transaction.account.is_asset %}
|
||||||
<i class="fa-solid fa-circle-check tw:text-green-300" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Income' %}{% endif %}"></i>
|
<i class="fa-solid fa-circle-check text-success/80" data-tippy-content="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Income' %}{% endif %}"></i>
|
||||||
{% elif transaction.type == "EX" and not transaction.account.is_asset %}
|
{% elif transaction.type == "EX" and not transaction.account.is_asset %}
|
||||||
<i class="fa-solid fa-circle-check tw:text-red-400" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Expense' %}{% endif %}"></i>
|
<i class="fa-solid fa-circle-check text-error" data-tippy-content="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Expense' %}{% endif %}"></i>
|
||||||
{% elif transaction.type == "EX" and transaction.account.is_asset %}
|
{% elif transaction.type == "EX" and transaction.account.is_asset %}
|
||||||
<i class="fa-solid fa-circle-check tw:text-red-300" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Expense' %}{% endif %}"></i>
|
<i class="fa-solid fa-circle-check text-error/80" data-tippy-content="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Expense' %}{% endif %}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if transaction.type == "IN" and not transaction.account.is_asset %}
|
{% if transaction.type == "IN" and not transaction.account.is_asset %}
|
||||||
<i class="fa-regular fa-circle tw:text-green-400" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Income' %}{% endif %}"></i>
|
<i class="fa-regular fa-circle text-success" data-tippy-content="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Income' %}{% endif %}"></i>
|
||||||
{% elif transaction.type == "IN" and transaction.account.is_asset %}
|
{% elif transaction.type == "IN" and transaction.account.is_asset %}
|
||||||
<i class="fa-regular fa-circle tw:text-green-300" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Income' %}{% endif %}"></i>
|
<i class="fa-regular fa-circle text-success/80" data-tippy-content="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Income' %}{% endif %}"></i>
|
||||||
{% elif transaction.type == "EX" and not transaction.account.is_asset %}
|
{% elif transaction.type == "EX" and not transaction.account.is_asset %}
|
||||||
<i class="fa-regular fa-circle tw:text-red-400" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Expense' %}{% endif %}"></i>
|
<i class="fa-regular fa-circle text-error" data-tippy-content="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Expense' %}{% endif %}"></i>
|
||||||
{% elif transaction.type == "EX" and transaction.account.is_asset %}
|
{% elif transaction.type == "EX" and transaction.account.is_asset %}
|
||||||
<i class="fa-regular fa-circle tw:text-red-300" data-bs-toggle="tooltip" data-bs-title="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Expense' %}{% endif %}"></i>
|
<i class="fa-regular fa-circle text-error/80" data-tippy-content="{% if transaction.description %}{{ transaction.description }}{% else %}{% trans 'Expense' %}{% endif %}"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="tw:hidden! tw:lg:block! card h-100 rounded-0"></div>
|
<div class="hidden! lg:block! card bg-base-300 h-full rounded-none"></div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% load month_name %}
|
{% load month_name %}
|
||||||
{% load static %}
|
{% load static %}
|
||||||
{% load webpack_loader %}
|
|
||||||
|
|
||||||
{% block title %}{% translate 'Monthly Overview' %} :: {{ month|month_name }}/{{ year }}{% endblock %}
|
{% block title %}{% translate 'Monthly Overview' %} :: {{ month|month_name }}/{{ year }}{% endblock %}
|
||||||
|
|
||||||
@@ -13,45 +12,35 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<div class="container">
|
||||||
<div class="row mb-3 gx-xl-4 gy-3 mb-4">
|
<div class="flex flex-wrap mb-4 gap-x-xl-4 gap-y-3">
|
||||||
{# Date picker#}
|
{# Date picker#}
|
||||||
<div class="col-12 col-xl-4 flex-row align-items-center d-flex">
|
<div class="w-full xl:w-4/12 flex-row items-center flex">
|
||||||
<div class="tw:text-base h-100 align-items-center d-flex">
|
<a role="button"
|
||||||
<a role="button"
|
hx-boost="true"
|
||||||
class="pe-4 py-2"
|
class="btn btn-ghost"
|
||||||
hx-boost="true"
|
hx-trigger="click, previous_month from:window"
|
||||||
hx-trigger="click, previous_month from:window"
|
href="{% url 'calendar' month=previous_month year=previous_year %}">
|
||||||
href="{% url 'calendar' month=previous_month year=previous_year %}"><i
|
<i class="fa-solid fa-chevron-left"></i>
|
||||||
class="fa-solid fa-chevron-left"></i></a>
|
</a>
|
||||||
</div>
|
<div class="text-2xl font-bold btn btn-ghost flex-1 text-center whitespace-normal flex-wrap h-auto min-w-0 1flex flex-"
|
||||||
<div class="tw:text-3xl fw-bold font-monospace tw:w-full text-center"
|
|
||||||
hx-get="{% url 'month_year_picker' %}"
|
hx-get="{% url 'month_year_picker' %}"
|
||||||
hx-target="#generic-offcanvas-left"
|
hx-target="#generic-offcanvas-left"
|
||||||
hx-trigger="click, date_picker from:window"
|
hx-trigger="click, date_picker from:window"
|
||||||
hx-vals='{"month": {{ month }}, "year": {{ year }}, "for": "calendar", "field": "date"}' role="button">
|
hx-vals='{"month": {{ month }}, "year": {{ year }}, "for": "calendar", "field": "date"}' role="button">
|
||||||
{{ month|month_name }} {{ year }}
|
{{ month|month_name }} {{ year }}
|
||||||
</div>
|
</div>
|
||||||
<div class="tw:text-base mx-2 h-100 align-items-center d-flex">
|
<a role="button"
|
||||||
<a role="button"
|
hx-boost="true"
|
||||||
class="ps-3 py-2"
|
class="btn btn-ghost"
|
||||||
hx-boost="true"
|
hx-trigger="click, next_month from:window"
|
||||||
hx-trigger="click, next_month from:window"
|
href="{% url 'calendar' month=next_month year=next_year %}">
|
||||||
href="{% url 'calendar' month=next_month year=next_year %}">
|
<i class="fa-solid fa-chevron-right"></i>
|
||||||
<i class="fa-solid fa-chevron-right"></i>
|
</a>
|
||||||
</a>
|
|
||||||
</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>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="flex flex-wrap">
|
||||||
<div class="show-loading" hx-get="{% url 'calendar_list' month=month year=year %}"
|
<div class="show-loading w-full" hx-get="{% url 'calendar_list' month=month year=year %}"
|
||||||
hx-trigger="load, updated from:window, selective_update from:window, every 10m"></div>
|
hx-trigger="load, updated from:window, selective_update from:window, every 10m"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,32 +1,29 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="container px-md-3 py-3 column-gap-5">
|
<c-ui.fab-single-action
|
||||||
<div class="tw:text-3xl fw-bold font-monospace tw:w-full mb-3">
|
url="{% url 'category_add' %}"
|
||||||
|
hx_target="#generic-offcanvas">
|
||||||
|
</c-ui.fab-single-action>
|
||||||
|
<div class="container">
|
||||||
|
<div class="text-3xl font-bold font-mono w-full mb-3">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div>{% translate 'Categories' %}<span>
|
<div>{% translate 'Categories' %}</div>
|
||||||
<a class="text-decoration-none tw:text-2xl p-1 category-action"
|
|
||||||
role="button"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-title="{% translate "Add" %}"
|
|
||||||
hx-get="{% url 'category_add' %}"
|
|
||||||
hx-target="#generic-offcanvas">
|
|
||||||
<i class="fa-solid fa-circle-plus fa-fw"></i></a>
|
|
||||||
</span></div>
|
|
||||||
{% endspaceless %}
|
{% endspaceless %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card bg-base-100 shadow-xl">
|
||||||
<div class="card-header">
|
<div class="card-header bg-base-200 p-4 rounded-box">
|
||||||
<ul class="nav nav-pills card-header-pills" id="myTab" role="tablist">
|
<div role="tablist" class="tabs tabs-border">
|
||||||
<li class="nav-item" role="presentation">
|
<input type="radio" name="installment_plan_tabs" class="tab" aria-label="{% translate 'Active' %}"
|
||||||
<button class="nav-link active" data-bs-toggle="tab" type="button" role="tab" aria-selected="true" hx-get="{% url 'categories_table_active' %}" hx-trigger="load, click" hx-target="#categories-table">{% translate 'Active' %}</button>
|
checked="checked"
|
||||||
</li>
|
hx-get="{% url 'categories_table_active' %}" hx-trigger="load, click" hx-target="#categories-table"
|
||||||
<li class="nav-item" role="presentation">
|
hx-indicator="#categories-table"/>
|
||||||
<button class="nav-link" hx-get="{% url 'categories_table_archived' %}" hx-target="#categories-table" data-bs-toggle="tab" type="button" role="tab" aria-selected="false">{% translate 'Archived' %}</button>
|
<input type="radio" name="installment_plan_tabs" class="tab" aria-label="{% translate 'Archived' %}"
|
||||||
</li>
|
hx-get="{% url 'categories_table_archived' %}" hx-trigger="click" hx-target="#categories-table"
|
||||||
</ul>
|
hx-indicator="#categories-table"/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div id="categories-table"></div>
|
<div id="categories-table" class="show-loading"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -6,72 +6,70 @@
|
|||||||
<div class="show-loading" hx-get="{% url 'categories_table_archived' %}" hx-trigger="updated from:window"
|
<div class="show-loading" hx-get="{% url 'categories_table_archived' %}" hx-trigger="updated from:window"
|
||||||
hx-swap="outerHTML">
|
hx-swap="outerHTML">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if categories %}
|
{% if categories %}
|
||||||
<div class="table-responsive">
|
<div>
|
||||||
<c-config.search></c-config.search>
|
<c-config.search></c-config.search>
|
||||||
<table class="table table-hover">
|
<div class="overflow-x-auto">
|
||||||
<thead>
|
<table class="table table-zebra">
|
||||||
<tr>
|
<thead>
|
||||||
<th scope="col" class="col-auto"></th>
|
<tr>
|
||||||
<th scope="col" class="col">{% translate 'Name' %}</th>
|
<th scope="col" class="table-col-auto"></th>
|
||||||
<th scope="col" class="col">{% translate 'Muted' %}</th>
|
<th scope="col">{% translate 'Name' %}</th>
|
||||||
</tr>
|
<th scope="col">{% translate 'Muted' %}</th>
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for category in categories %}
|
|
||||||
<tr class="category">
|
|
||||||
<td class="col-auto text-center">
|
|
||||||
<div class="btn-group" role="group" aria-label="{% translate 'Actions' %}">
|
|
||||||
<a class="btn btn-secondary btn-sm"
|
|
||||||
role="button"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
hx-swap="innerHTML"
|
|
||||||
data-bs-title="{% translate "Edit" %}"
|
|
||||||
hx-get="{% url 'category_edit' category_id=category.id %}"
|
|
||||||
hx-target="#generic-offcanvas">
|
|
||||||
<i class="fa-solid fa-pencil fa-fw"></i></a>
|
|
||||||
<a class="btn btn-secondary btn-sm text-danger"
|
|
||||||
role="button"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-title="{% translate "Delete" %}"
|
|
||||||
hx-delete="{% url 'category_delete' category_id=category.id %}"
|
|
||||||
hx-trigger='confirmed'
|
|
||||||
hx-swap="innerHTML"
|
|
||||||
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>
|
|
||||||
{% if not category.owner %}
|
|
||||||
<a class="btn btn-secondary btn-sm text-primary"
|
|
||||||
role="button"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-title="{% translate "Take ownership" %}"
|
|
||||||
hx-get="{% url 'category_take_ownership' category_id=category.id %}">
|
|
||||||
<i class="fa-solid fa-crown fa-fw"></i></a>
|
|
||||||
{% endif %}
|
|
||||||
{% if user == category.owner %}
|
|
||||||
<a class="btn btn-secondary btn-sm text-primary"
|
|
||||||
role="button"
|
|
||||||
hx-target="#generic-offcanvas"
|
|
||||||
hx-swap="innerHTML"
|
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-title="{% translate "Share" %}"
|
|
||||||
hx-get="{% url 'category_share_settings' pk=category.id %}">
|
|
||||||
<i class="fa-solid fa-share fa-fw"></i></a>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<td class="col">{{ category.name }}</td>
|
|
||||||
<td class="col">
|
|
||||||
{% if category.mute %}<i class="fa-solid fa-check text-success"></i>{% endif %}
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
</thead>
|
||||||
</tbody>
|
<tbody>
|
||||||
</table>
|
{% for category in categories %}
|
||||||
|
<tr class="category">
|
||||||
|
<td class="table-col-auto text-center">
|
||||||
|
<div class="join" role="group" aria-label="{% translate 'Actions' %}">
|
||||||
|
<a class="btn btn-secondary btn-sm join-item"
|
||||||
|
role="button"
|
||||||
|
hx-swap="innerHTML"
|
||||||
|
data-tippy-content="{% translate "Edit" %}"
|
||||||
|
hx-get="{% url 'category_edit' category_id=category.id %}"
|
||||||
|
hx-target="#generic-offcanvas">
|
||||||
|
<i class="fa-solid fa-pencil fa-fw"></i></a>
|
||||||
|
{% if not category.owner %}
|
||||||
|
<a class="btn btn-secondary btn-sm join-item"
|
||||||
|
role="button"
|
||||||
|
data-tippy-content="{% translate "Take ownership" %}"
|
||||||
|
hx-get="{% url 'category_take_ownership' category_id=category.id %}">
|
||||||
|
<i class="fa-solid fa-crown fa-fw"></i></a>
|
||||||
|
{% endif %}
|
||||||
|
{% if user == category.owner %}
|
||||||
|
<a class="btn btn-secondary btn-sm join-item"
|
||||||
|
role="button"
|
||||||
|
hx-target="#generic-offcanvas"
|
||||||
|
hx-swap="innerHTML"
|
||||||
|
data-tippy-content="{% translate "Share" %}"
|
||||||
|
hx-get="{% url 'category_share_settings' pk=category.id %}">
|
||||||
|
<i class="fa-solid fa-share fa-fw"></i></a>
|
||||||
|
{% endif %}
|
||||||
|
<a class="btn btn-error btn-sm join-item"
|
||||||
|
role="button"
|
||||||
|
data-tippy-content="{% translate "Delete" %}"
|
||||||
|
hx-delete="{% url 'category_delete' category_id=category.id %}"
|
||||||
|
hx-trigger='confirmed'
|
||||||
|
hx-swap="innerHTML"
|
||||||
|
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>
|
||||||
|
</td>
|
||||||
|
<td>{{ category.name }}</td>
|
||||||
|
<td>
|
||||||
|
{% if category.mute %}<i class="fa-solid fa-check text-success"></i>{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<c-msg.empty title="{% translate "No categories" %}" remove-padding></c-msg.empty>
|
<c-msg.empty title="{% translate "No categories" %}" remove-padding></c-msg.empty>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -7,49 +7,33 @@
|
|||||||
{% block body %}
|
{% block body %}
|
||||||
{% regroup month_year_data by year as years_list %}
|
{% regroup month_year_data by year as years_list %}
|
||||||
|
|
||||||
<ul class="nav nav-pills nav-fill" id="yearTabs" role="tablist">
|
<div role="tablist" class="tabs tabs-border w-full" id="yearTabs">
|
||||||
{% for x in years_list %}
|
{% for x in years_list %}
|
||||||
<li class="nav-item" role="presentation">
|
<input type="radio"
|
||||||
<button class="nav-link{% if x.grouper == current_year %} active{% endif %}"
|
name="year_tabs"
|
||||||
id="{{ x.grouper }}"
|
role="tab"
|
||||||
data-bs-toggle="tab"
|
class="tab"
|
||||||
data-bs-target="#{{ x.grouper }}-pane"
|
aria-label="{{ x.grouper }}"
|
||||||
type="button"
|
id="tab-{{ x.grouper }}"
|
||||||
role="tab"
|
{% if x.grouper == current_year %}checked="checked"{% endif %} />
|
||||||
aria-controls="{{ x.grouper }}-pane"
|
<div role="tabpanel" class="tab-content" id="{{ x.grouper }}-pane">
|
||||||
aria-selected="{% if x.grouper == current_year %}true{% else %}false{% endif %}">
|
<ul class="menu bg-base-100 w-full" id="month-year-list" hx-boost="true">
|
||||||
{{ x.grouper }}
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
<div class="tab-content" id="yearTabsContent" hx-boost="true">
|
|
||||||
{% for x in years_list %}
|
|
||||||
<div class="tab-pane fade{% if x.grouper == current_year %} show active{% endif %} mt-2"
|
|
||||||
id="{{ x.grouper }}-pane"
|
|
||||||
role="tabpanel"
|
|
||||||
aria-labelledby="{{ x.grouper }}"
|
|
||||||
tabindex="0">
|
|
||||||
<ul class="list-group list-group-flush" id="month-year-list">
|
|
||||||
{% for month_data in x.list %}
|
{% for month_data in x.list %}
|
||||||
<li class="list-group-item tw:hover:bg-zinc-900
|
<li {% if month_data.month == current_month and month_data.year == current_year %}class="disabled"{% endif %}>
|
||||||
{% if month_data.month == current_month and month_data.year == current_year %} disabled bg-primary{% endif %}"
|
<a class="{% if month_data.month == current_month and month_data.year == current_year %}menu-active{% endif %}"
|
||||||
{% if month_data.month == current_month and month_data.year == current_year %}aria-disabled="true"{% endif %}>
|
href={{ month_data.url }}
|
||||||
<div class="d-flex justify-content-between">
|
{% if month_data.month == current_month and month_data.year == current_year %}aria-disabled="true"{% endif %}>
|
||||||
<a class="text-decoration-none stretched-link {% if month_data.month == current_month and month_data.year == current_year %} text-black{% endif %}"
|
<span class="flex-1">{{ month_data.month|month_name }}</span>
|
||||||
href={{ month_data.url }}>
|
<span class="badge badge-primary">{{ month_data.transaction_count }}</span>
|
||||||
{{ month_data.month|month_name }}</a>
|
</a>
|
||||||
<span class="badge text-bg-secondary">{{ month_data.transaction_count }}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
<hr>
|
<hr class="hr my-4">
|
||||||
<div class="w-full text-end">
|
<div class="w-full text-end">
|
||||||
<a class="btn btn-outline-primary btn-sm" href="{{ today_url }}" role="button" hx-boost="true">{% trans 'Today' %}</a>
|
<a class="btn btn-outline btn-primary btn-sm" href="{{ today_url }}" role="button" hx-boost="true">{% trans 'Today' %}</a>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -2,19 +2,25 @@
|
|||||||
{% load toast_bg %}
|
{% load toast_bg %}
|
||||||
{% if messages %}
|
{% if messages %}
|
||||||
{% for message in messages %}
|
{% for message in messages %}
|
||||||
<div class="toast align-items-center text-bg-{{ message.tags | toast_bg }} border-0"
|
<div class="toasty alert alert-{{ message.tags | toast_bg }}"
|
||||||
role="alert"
|
role="alert"
|
||||||
aria-live="assertive"
|
aria-live="assertive"
|
||||||
aria-atomic="true">
|
aria-atomic="true">
|
||||||
<div class="toast-header">
|
<div class="flex items-center justify-between w-full">
|
||||||
<i class="{{ message.tags | toast_icon }} fa-fw me-1"></i>
|
<div class="flex items-center gap-2">
|
||||||
<strong class="me-auto">{{ message.tags | toast_title }}</strong>
|
<i class="{{ message.tags | toast_icon }} fa-fw"></i>
|
||||||
|
<div>
|
||||||
|
<strong>{{ message.tags | toast_title }}</strong>
|
||||||
|
<div>{{ message }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<button type="button"
|
<button type="button"
|
||||||
class="btn-close"
|
class="btn btn-ghost btn-sm btn-circle"
|
||||||
data-bs-dismiss="toast"
|
_="on click remove closest .toasty"
|
||||||
aria-label={% translate 'Close' %}></button>
|
aria-label={% translate 'Close' %}>
|
||||||
|
<i class="fa-solid fa-xmark"></i>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="toast-body">{{ message }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -1,3 +1,26 @@
|
|||||||
{#This is here so we can add dynamic Tailwind classes that will be required via JS/hyperscript but Tailwind has no knowledge of#}
|
{#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="lg:w-[15vw]"></div>
|
||||||
<div class="tw:lg:ml-[16vw]"></div>
|
<div class="lg:ml-[16vw]"></div>
|
||||||
|
<div class="grid-cols-12"></div>
|
||||||
|
<div class="md:col-span-1"></div>
|
||||||
|
<div class="md:col-span-2"></div>
|
||||||
|
<div class="md:col-span-3"></div>
|
||||||
|
<div class="md:col-span-4"></div>
|
||||||
|
<div class="md:col-span-5"></div>
|
||||||
|
<div class="md:col-span-6"></div>
|
||||||
|
<div class="md:col-span-7"></div>
|
||||||
|
<div class="md:col-span-8"></div>
|
||||||
|
<div class="md:col-span-9"></div>
|
||||||
|
<div class="md:col-span-10"></div>
|
||||||
|
<div class="md:col-span-11"></div>
|
||||||
|
<div class="md:col-span-12"></div>
|
||||||
|
<div class="col-span-12"></div>
|
||||||
|
<div class="alert-error"></div>
|
||||||
|
<div class="alert-info"></div>
|
||||||
|
<div class="alert-success"></div>
|
||||||
|
<div class="alert-warning"></div>
|
||||||
|
<div class="textarea"></div>
|
||||||
|
<div class="border-base-content/60"></div>
|
||||||
|
<div class="bg-error/20"></div>
|
||||||
|
<div class="bg-success/20"></div>
|
||||||
|
<div class="checkbox checkbox-xs"></div>
|
||||||
|
|||||||
@@ -1,10 +1,23 @@
|
|||||||
{% load currency_display %}
|
{% load currency_display %}
|
||||||
|
|
||||||
|
{% currency_display amount=amount prefix=prefix suffix=suffix decimal_places=decimal_places as formatted_amount %}
|
||||||
|
|
||||||
{% if not divless %}
|
{% if not divless %}
|
||||||
<div class="{% if text_end %}text-end{% elif text_start %}text-start{% endif %}">
|
<div class="{% if text_end %}text-end{% elif text_start %}text-start{% endif %}">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<span class="amount{% if color == 'grey' or color == "gray" %} tw:text-gray-500{% elif color == 'green' %} tw:text-green-400{% elif color == 'red' %} tw:text-red-400{% endif %} {{ custom_class }}"
|
<span class="amount
|
||||||
data-original-value="{% currency_display amount=amount prefix=prefix suffix=suffix decimal_places=decimal_places %}"
|
{% if color == 'grey' or color == "gray" %} text-exchange-rate
|
||||||
|
{% elif color == 'green' %} text-income {% elif color == 'red' %} text-expense
|
||||||
|
{% elif color == 'auto' %}
|
||||||
|
{% if amount > 0 %} text-income
|
||||||
|
{% elif amount < 0 %} text-expense
|
||||||
|
{% else %} text-base-content {% endif %}
|
||||||
|
{% endif %}
|
||||||
|
font-medium {{ custom_class }}"
|
||||||
|
data-original-sign="{{ formatted_amount.sign }}"
|
||||||
|
data-original-prefix="{{ formatted_amount.prefix }}"
|
||||||
|
data-original-amount="{{ formatted_amount.amount }}"
|
||||||
|
data-original-suffix="{{ formatted_amount.suffix }}"
|
||||||
data-amount="{{ amount|floatformat:"-40u" }}">
|
data-amount="{{ amount|floatformat:"-40u" }}">
|
||||||
</span><span>{{ slot }}</span>
|
</span><span>{{ slot }}</span>
|
||||||
{% if not divless %}
|
{% if not divless %}
|
||||||
|
|||||||
@@ -1,33 +1,14 @@
|
|||||||
<div class="tw:min-h-16">
|
{% load i18n%}
|
||||||
<div
|
|
||||||
id="fab-wrapper"
|
|
||||||
class="tw:fixed tw:bottom-5 tw:right-5 tw:ml-auto tw:w-max tw:flex tw:flex-col tw:items-end mt-5 tw:z-20">
|
|
||||||
<div
|
|
||||||
id="menu"
|
|
||||||
class="tw:flex tw:flex-col tw:items-end tw:space-y-6 tw:transition-all tw:duration-300 tw:ease-in-out tw:opacity-0 tw:invisible tw:hidden tw:mb-2">
|
|
||||||
|
|
||||||
{{ slot }}
|
<div class="fab">
|
||||||
|
<div tabindex="0" role="button" class="btn btn-lg btn-circle btn-primary">
|
||||||
|
<i class="fa-solid fa-plus text-2xl fa-fw"></i>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button
|
<div class="fab-close">
|
||||||
class="btn btn-primary rounded-circle p-0 tw:w-12 tw:h-12 tw:flex tw:items-center tw:justify-center tw:shadow-lg tw:hover:shadow-xl tw:focus:shadow-xl tw:transition-all tw:duration-300 tw:ease-in-out"
|
{% trans 'Close' %} <span class="btn btn-circle btn-lg btn-error"><i class="fa-solid fa-xmark text-2xl fa-fw"></i></span>
|
||||||
_="
|
</div>
|
||||||
on click or focusout
|
|
||||||
if #menu.classList.contains('tw:invisible') and event.type === 'click'
|
{{ slot }}
|
||||||
add .{'tw:rotate-45'} to #fab-icon
|
|
||||||
remove .{'tw:invisible'} from #menu
|
</div>
|
||||||
remove .{'tw:hidden'} from #menu
|
|
||||||
remove .{'tw:opacity-0'} from #menu
|
|
||||||
else
|
|
||||||
wait 0.2s
|
|
||||||
remove .{'tw:rotate-45'} from #fab-icon
|
|
||||||
add .{'tw:invisible'} to #menu
|
|
||||||
add .{'tw:hidden'} to #menu
|
|
||||||
add .{'tw:opacity-0'} to #menu
|
|
||||||
end
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<i id="fab-icon" class="fa-solid fa-plus tw:text-3xl tw:transition-transform tw:duration-300 tw:ease-in-out"></i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@@ -1,11 +1,6 @@
|
|||||||
{% load i18n %}
|
<div hx-get="{{ url }}"
|
||||||
<div class="tw:relative fab-item">
|
hx-trigger="{{ hx_trigger }}"
|
||||||
<button class="btn btn-sm btn-{{ color }}"
|
hx-target="{{ hx_target }}"
|
||||||
hx-get="{{ url }}"
|
hx-vals='{{ hx_vals }}'>
|
||||||
hx-trigger="{{ hx_trigger }}"
|
<span class="bg-neutral/60 text-neutral-content rounded-box p-2">{{ title }}</span>
|
||||||
hx-target="{{ hx_target }}"
|
<button class="btn btn-lg btn-circle btn-{{color}}"><i class="{{ icon }} fa-fw"></i></button></div>
|
||||||
hx-vals='{{ hx_vals }}'>
|
|
||||||
<i class="{{ icon }} me-2"></i>
|
|
||||||
{{ title }}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
<li class="tw:lg:hidden tw:lg:group-hover:block">
|
<li class="lg:hidden lg:group-hover:block">
|
||||||
<div class="d-flex align-items-center" data-bs-toggle="collapse" href="#{{ title|slugify }}" role="button"
|
<div class="flex items-center" data-bs-toggle="collapse" href="#{{ title|slugify }}" role="button"
|
||||||
aria-expanded="false" aria-controls="{{ title|slugify }}">
|
aria-expanded="false" aria-controls="{{ title|slugify }}">
|
||||||
<span
|
<span
|
||||||
class="text-muted small fw-bold text-uppercase tw:lg:hidden tw:lg:group-hover:inline me-2">{{ title }}</span>
|
class="text-base-content/60 text-sm font-bold uppercase lg:hidden lg:group-hover:inline me-2">{{ title }}</span>
|
||||||
<hr class="flex-grow-1"/>
|
<hr class="flex-grow"/>
|
||||||
<i class="fas fa-chevron-down text-muted tw:lg:before:hidden tw:lg:group-hover:before:inline tw:ml-2 tw:lg:ml-0 tw:lg:group-hover:ml-2"></i>
|
<i class="fas fa-chevron-down text-base-content/60 lg:before:hidden lg:group-hover:before:inline ml-2 lg:ml-0 lg:group-hover:ml-2"></i>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<div class="collapse tw:lg:hidden tw:lg:group-hover:block" id="{{ title|slugify }}">
|
<div class="collapse lg:hidden lg:group-hover:block" id="{{ title|slugify }}">
|
||||||
{{ slot }}
|
{{ slot }}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
<li>
|
<li>
|
||||||
<div class="d-flex align-items-center">
|
<div class="flex items-center min-h-6">
|
||||||
<span class="sidebar-menu-header text-muted small fw-bold text-uppercase me-2">{{ title }}</span>
|
{% if title %}
|
||||||
<hr class="flex-grow-1"/>
|
<span class="sidebar-menu-header text-base-content/60 text-xs font-bold uppercase mr-3">{{ title }}</span>
|
||||||
|
{% endif %}
|
||||||
|
<hr class="hr grow"/>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
{% load active_link %}
|
{% load active_link %}
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url url %}"
|
<a href="{% url url %}"
|
||||||
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" %}"
|
class="text-xs flex items-center no-underline ps-3 p-2 rounded-box sidebar-item {% active_link views=active css_class="sidebar-active" %}"
|
||||||
{% if tooltip %}
|
{% if tooltip %}
|
||||||
data-bs-placement="right"
|
data-tippy-placement="right"
|
||||||
data-bs-toggle="tooltip"
|
data-tippy-content="{{ tooltip }}"
|
||||||
data-bs-title="{{ tooltip }}"
|
|
||||||
{% endif %}>
|
{% endif %}>
|
||||||
<i class="{{ icon }} fa-fw"></i>
|
<i class="{{ icon }} fa-fw"></i>
|
||||||
<span
|
<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>
|
class="ms-3 font-medium">{{ title }}</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -2,15 +2,14 @@
|
|||||||
<li>
|
<li>
|
||||||
<a href="{{ url }}"
|
<a href="{{ url }}"
|
||||||
hx-boost="false"
|
hx-boost="false"
|
||||||
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" %}"
|
class="text-xs flex items-center no-underline ps-3 p-2 rounded-3xl sidebar-item {% active_link views=active css_class="sidebar-active" %}"
|
||||||
{% if tooltip %}
|
{% if tooltip %}
|
||||||
data-bs-placement="right"
|
data-tippy-placement="right"
|
||||||
data-bs-toggle="tooltip"
|
data-tippy-content="{{ tooltip }}"
|
||||||
data-bs-title="{{ tooltip }}"
|
|
||||||
{% endif %}>
|
{% endif %}>
|
||||||
|
|
||||||
<i class="{{ icon }} fa-fw"></i>
|
<i class="{{ icon }} fa-fw"></i>
|
||||||
<span
|
<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>
|
class="ms-3 font-medium">{{ title }}</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div id="search" class="mb-3">
|
<div id="search" class="mb-3">
|
||||||
<label class="w-100">
|
<label class="w-full">
|
||||||
<input type="search"
|
<input type="search"
|
||||||
class="form-control"
|
class="input input-bordered w-full"
|
||||||
placeholder="{% translate 'Search' %}"
|
placeholder="{% translate 'Search' %}"
|
||||||
_="on input or search
|
_="on input or search
|
||||||
show < tbody>tr /> in <table/>
|
show < tbody>tr /> in <table/>
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<div class="row {% if not remove_padding %}p-5{% endif %}">
|
<div class="grid grid-cols-1 {% if not remove_padding %}p-5{% endif %}">
|
||||||
<div class="col {% if not remove_padding %}p-5{% endif %}">
|
<div class="{% if not remove_padding %}p-5{% endif %}">
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<i class="{% if icon %}{{ icon }}{% else %}fa-solid fa-circle-xmark{% endif %} tw:text-6xl"></i>
|
<i class="{% if icon %}{{ icon }}{% else %}fa-solid fa-circle-xmark{% endif %} text-6xl"></i>
|
||||||
<p class="lead mt-4 mb-0">{{ title }}</p>
|
<p class="text-lg mt-4 mb-0">{{ title }}</p>
|
||||||
<p class="tw:text-gray-500">{{ subtitle }}</p>
|
<p class="text-subtle">{{ subtitle }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,23 +1,22 @@
|
|||||||
{% load markdown %}
|
{% load markdown %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div
|
<div
|
||||||
class="transaction {% if transaction.type == "EX" %}expense{% else %}income{% endif %} tw:group/transaction tw:relative tw:hover:z-10">
|
class="transaction {% if transaction.type == "EX" %}expense{% else %}income{% endif %} group/transaction">
|
||||||
<div class="d-flex my-1">
|
<div class="flex my-1">
|
||||||
{% if not disable_selection or not dummy %}
|
{% if not disable_selection or not dummy %}
|
||||||
<label class="px-3 d-flex align-items-center justify-content-center">
|
<label class="px-3 flex! items-center justify-center">
|
||||||
<input class="form-check-input" type="checkbox" name="transactions" value="{{ transaction.id }}"
|
<input class="checkbox" type="checkbox" name="transactions" value="{{ transaction.id }}"
|
||||||
id="check-{{ transaction.id }}" aria-label="{% translate 'Select' %}" hx-preserve>
|
id="check-{{ transaction.id }}" aria-label="{% translate 'Select' %}" hx-preserve>
|
||||||
</label>
|
</label>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="tw:border-s-4 tw:border-e-0 tw:border-t-0 tw:border-b-0 border-bottom
|
<div class="border-s-4 border-e-0 border-t-0
|
||||||
tw:hover:bg-zinc-900 p-2 {% if transaction.account.is_asset %}tw:border-dashed{% else %}tw:border-solid{% endif %}
|
hover:bg-base-200 p-2 {% if transaction.account.is_asset %}border-dashed{% else %}border-solid{% endif %}
|
||||||
{% if transaction.type == "EX" %}tw:border-red-500{% else %}tw:border-green-500{% endif %} tw:relative
|
{% if transaction.type == "EX" %}border-s-error{% else %}border-s-success{% endif %} relative
|
||||||
w-100 transaction-item">
|
w-full transaction-item bg-base-100 rounded">
|
||||||
<div class="row font-monospace tw:text-sm align-items-center">
|
<div class="flex flex-wrap font-mono text-sm items-center">
|
||||||
<div
|
<div class="lg:w-auto w-full flex items-center text-2xl lg:text-xl lg:text-center text-center p-0 cursor-pointer">
|
||||||
class="col-lg-auto col-12 d-flex align-items-center tw:text-2xl tw:lg:text-xl text-lg-center text-center p-0 ps-1">
|
|
||||||
{% if not transaction.deleted %}
|
{% if not transaction.deleted %}
|
||||||
<a class="text-decoration-none p-3 tw:text-gray-500!"
|
<a class="no-underline p-3 text-base-content/50"
|
||||||
title="{% if transaction.is_paid %}{% trans 'Paid' %}{% else %}{% trans 'Projected' %}{% endif %}"
|
title="{% if transaction.is_paid %}{% trans 'Paid' %}{% else %}{% trans 'Projected' %}{% endif %}"
|
||||||
role="button"
|
role="button"
|
||||||
{% if not dummy %}
|
{% if not dummy %}
|
||||||
@@ -28,7 +27,7 @@
|
|||||||
class="fa-regular fa-circle"></i>{% endif %}
|
class="fa-regular fa-circle"></i>{% endif %}
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="text-decoration-none p-3 tw:text-gray-500!"
|
<div class="no-underline p-3 text-base-content/50"
|
||||||
title="{% if transaction.is_paid %}{% trans 'Paid' %}{% else %}{% trans 'Projected' %}{% endif %}">
|
title="{% if transaction.is_paid %}{% trans 'Paid' %}{% else %}{% trans 'Projected' %}{% endif %}">
|
||||||
{% if transaction.is_paid %}<i class="fa-regular fa-circle-check"></i>{% else %}<i
|
{% if transaction.is_paid %}<i class="fa-regular fa-circle-check"></i>{% else %}<i
|
||||||
class="fa-regular fa-circle"></i>{% endif %}
|
class="fa-regular fa-circle"></i>{% endif %}
|
||||||
@@ -36,79 +35,79 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="col-lg col-12 {% if transaction.account.is_untracked_by or transaction.category.mute or transaction.mute %}tw:brightness-80{% endif %}">
|
class="lg:flex-1 w-full {% if transaction.account.is_untracked_by or transaction.category.mute or transaction.mute %}opacity-70{% endif %}">
|
||||||
{# Date#}
|
{# Date#}
|
||||||
<div class="row mb-2 mb-lg-1 tw:text-gray-400">
|
<div class="flex flex-wrap mb-2 lg:mb-1 text-base-content/70">
|
||||||
<div class="col-auto pe-1"><i class="fa-solid fa-calendar fa-fw me-1 fa-xs"></i></div>
|
<div class="w-auto pe-1"><i class="fa-solid fa-calendar fa-fw mr-1 fa-xs"></i></div>
|
||||||
<div
|
<div
|
||||||
class="col ps-0">{{ transaction.date|date:"SHORT_DATE_FORMAT" }} • {{ transaction.reference_date|date:"b/Y" }}</div>
|
class="flex-1 ps-0">{{ transaction.date|date:"SHORT_DATE_FORMAT" }} • {{ transaction.reference_date|date:"b/Y" }}</div>
|
||||||
</div>
|
</div>
|
||||||
{# Description#}
|
{# Description#}
|
||||||
<div class="mb-2 mb-lg-1 text-body tw:text-base">
|
<div class="mb-2 lg:mb-1 text-base-content text-base">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<span class="{% if transaction.description %}me-2{% endif %}">{{ transaction.description }}</span>
|
<span class="{% if transaction.description %}mr-2{% endif %}">{{ transaction.description }}</span>
|
||||||
{% if transaction.installment_plan and transaction.installment_id %}
|
{% if transaction.installment_plan and transaction.installment_id %}
|
||||||
<span
|
<span
|
||||||
class="badge text-bg-secondary mx-1">{{ transaction.installment_id }}/{{ transaction.installment_plan.installment_total_number }}</span>
|
class="badge badge-neutral mx-1">{{ transaction.installment_id }}/{{ transaction.installment_plan.installment_total_number }}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if transaction.recurring_transaction %}
|
{% if transaction.recurring_transaction %}
|
||||||
<span class="text-primary tw:text-xs mx-1"><i class="fa-solid fa-arrows-rotate fa-fw"></i></span>
|
<span class="text-primary text-xs mx-1"><i class="fa-solid fa-arrows-rotate fa-fw"></i></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if transaction.dca_expense_entries.all or transaction.dca_income_entries.all %}
|
{% if transaction.dca_expense_entries.all or transaction.dca_income_entries.all %}
|
||||||
<span class="badge text-bg-secondary mx-1">{% trans 'DCA' %}</span>
|
<span class="badge badge-neutral mx-1">{% trans 'DCA' %}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endspaceless %}
|
{% endspaceless %}
|
||||||
</div>
|
</div>
|
||||||
<div class="tw:text-gray-400 tw:text-sm">
|
<div class="text-base-content/70 text-sm">
|
||||||
{# Entities #}
|
{# Entities #}
|
||||||
{% comment %} First, check for the highest priority: a valid 'overriden_entities' list. {% endcomment %}
|
{% comment %} First, check for the highest priority: a valid 'overriden_entities' list. {% endcomment %}
|
||||||
{% if overriden_entities %}
|
{% if overriden_entities %}
|
||||||
<div class="row mb-2 mb-lg-1 tw:text-gray-400">
|
<div class="flex flex-wrap mb-2 lg:mb-1 text-base-content/70">
|
||||||
<div class="col-auto pe-1"><i class="fa-solid fa-user-group fa-fw me-1 fa-xs"></i></div>
|
<div class="w-auto pe-1"><i class="fa-solid fa-user-group fa-fw mr-1 fa-xs"></i></div>
|
||||||
<div class="col ps-0">{{ overriden_entities|join:", " }}</div>
|
<div class="flex-1 ps-0">{{ overriden_entities|join:", " }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% comment %} If no override, fall back to transaction entities, but ONLY if the transaction has an ID. {% endcomment %}
|
{% 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 %}
|
{% elif transaction.id and transaction.entities.all %}
|
||||||
<div class="row mb-2 mb-lg-1 tw:text-gray-400">
|
<div class="flex flex-wrap mb-2 lg:mb-1 text-base-content/70">
|
||||||
<div class="col-auto pe-1"><i class="fa-solid fa-user-group fa-fw me-1 fa-xs"></i></div>
|
<div class="w-auto pe-1"><i class="fa-solid fa-user-group fa-fw mr-1 fa-xs"></i></div>
|
||||||
<div class="col ps-0">{{ transaction.entities.all|join:", " }}</div>
|
<div class="flex-1 ps-0">{{ transaction.entities.all|join:", " }}</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{# Notes#}
|
{# Notes#}
|
||||||
{% if transaction.notes %}
|
{% if transaction.notes %}
|
||||||
<div class="row mb-2 mb-lg-1 tw:text-gray-400">
|
<div class="flex flex-wrap mb-2 lg:mb-1 text-base-content/70">
|
||||||
<div class="col-auto pe-1"><i class="fa-solid fa-align-left fa-fw me-1 fa-xs"></i></div>
|
<div class="w-auto pe-1"><i class="fa-solid fa-align-left fa-fw mr-1 fa-xs"></i></div>
|
||||||
<div class="col ps-0">{{ transaction.notes | limited_markdown | linebreaksbr }}</div>
|
<div class="flex-1 ps-0">{{ transaction.notes | limited_markdown | linebreaksbr }}</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{# Category#}
|
{# Category#}
|
||||||
{% if transaction.category %}
|
{% if transaction.category %}
|
||||||
<div class="row mb-2 mb-lg-1 tw:text-gray-400">
|
<div class="flex flex-wrap mb-2 lg:mb-1 text-base-content/70">
|
||||||
<div class="col-auto pe-1"><i class="fa-solid fa-icons fa-fw me-1 fa-xs"></i></div>
|
<div class="w-auto pe-1"><i class="fa-solid fa-icons fa-fw mr-1 fa-xs"></i></div>
|
||||||
<div class="col ps-0">{{ transaction.category.name }}</div>
|
<div class="flex-1 ps-0">{{ transaction.category.name }}</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{# Tags#}
|
{# Tags#}
|
||||||
{% comment %} First, check for the highest priority: a valid 'overriden_tags' list. {% endcomment %}
|
{% comment %} First, check for the highest priority: a valid 'overriden_tags' list. {% endcomment %}
|
||||||
{% if overriden_tags %}
|
{% if overriden_tags %}
|
||||||
<div class="row mb-2 mb-lg-1 tw:text-gray-400">
|
<div class="flex flex-wrap mb-2 lg:mb-1 text-base-content/70">
|
||||||
<div class="col-auto pe-1"><i class="fa-solid fa-hashtag fa-fw me-1 fa-xs"></i></div>
|
<div class="w-auto pe-1"><i class="fa-solid fa-hashtag fa-fw mr-1 fa-xs"></i></div>
|
||||||
<div class="col ps-0">{{ overriden_tags|join:", " }}</div>
|
<div class="flex-1 ps-0">{{ overriden_tags|join:", " }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% comment %} If no override, fall back to transaction tags, but ONLY if the transaction has an ID. {% endcomment %}
|
{% 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 %}
|
{% elif transaction.id and transaction.tags.all %}
|
||||||
<div class="row mb-2 mb-lg-1 tw:text-gray-400">
|
<div class="flex flex-wrap mb-2 lg:mb-1 text-base-content/70">
|
||||||
<div class="col-auto pe-1"><i class="fa-solid fa-hashtag fa-fw me-1 fa-xs"></i></div>
|
<div class="w-auto pe-1"><i class="fa-solid fa-hashtag fa-fw mr-1 fa-xs"></i></div>
|
||||||
<div class="col ps-0">{{ transaction.tags.all|join:", " }}</div>
|
<div class="flex-1 ps-0">{{ transaction.tags.all|join:", " }}</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="col-lg-auto col-12 text-lg-end align-self-end {% if transaction.account.is_untracked_by or transaction.category.mute or transaction.mute %}tw:brightness-80{% endif %}">
|
class="lg:w-auto w-full lg:text-right self-end {% if transaction.account.is_untracked_by or transaction.category.mute or transaction.mute %}opacity-70{% endif %}">
|
||||||
<div class="main-amount mb-2 mb-lg-0">
|
<div class="main-amount mb-2 lg:mb-0">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="transaction.amount"
|
:amount="transaction.amount"
|
||||||
:prefix="transaction.account.currency.prefix"
|
:prefix="transaction.account.currency.prefix"
|
||||||
@@ -120,7 +119,7 @@
|
|||||||
{% if not dummy %}
|
{% if not dummy %}
|
||||||
{% with exchanged=transaction.exchanged_amount %}
|
{% with exchanged=transaction.exchanged_amount %}
|
||||||
{% if exchanged %}
|
{% if exchanged %}
|
||||||
<div class="exchanged-amount mb-2 mb-lg-0">
|
<div class="exchanged-amount mb-2 lg:mb-0">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="exchanged.amount"
|
:amount="exchanged.amount"
|
||||||
:prefix="exchanged.prefix"
|
:prefix="exchanged.prefix"
|
||||||
@@ -136,112 +135,106 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if not dummy %}
|
{% if not dummy %}
|
||||||
<div>
|
<div class="z-1000">
|
||||||
{# Item actions#}
|
{# Item actions#}
|
||||||
<div
|
<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">
|
class="card card-border-base-100 transaction-actions absolute left-1/2 -translate-x-1/2 -translate-y-1/2 top-0 invisible group-hover/transaction:visible flex flex-row bg-base-200">
|
||||||
<div class="card-body p-1 shadow-lg d-flex flex-row gap-1">
|
<div class="card-body p-1 shadow-lg flex flex-row gap-1">
|
||||||
{% if not transaction.deleted %}
|
{% if not transaction.deleted %}
|
||||||
<a class="btn btn-secondary btn-sm transaction-action"
|
<a class="btn btn-soft btn-sm transaction-action"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
hx-get="{% url 'transaction_edit' transaction_id=transaction.id %}"
|
||||||
data-bs-title="{% translate "Edit" %}"
|
hx-target="#generic-offcanvas" hx-swap="innerHTML"
|
||||||
hx-get="{% url 'transaction_edit' transaction_id=transaction.id %}"
|
data-tippy-content="{% translate "Edit" %}">
|
||||||
hx-target="#generic-offcanvas" hx-swap="innerHTML">
|
|
||||||
<i class="fa-solid fa-pencil fa-fw"></i></a>
|
<i class="fa-solid fa-pencil fa-fw"></i></a>
|
||||||
<a class="btn btn-secondary btn-sm transaction-action"
|
<a class="btn btn-error btn-soft btn-sm transaction-action"
|
||||||
role="button"
|
role="button"
|
||||||
data-bs-toggle="tooltip"
|
hx-delete="{% url 'transaction_delete' transaction_id=transaction.id %}"
|
||||||
data-bs-title="{% translate "Delete" %}"
|
hx-trigger='confirmed'
|
||||||
hx-delete="{% url 'transaction_delete' transaction_id=transaction.id %}"
|
data-tippy-content="{% translate "Delete" %}"
|
||||||
hx-trigger='confirmed'
|
data-bypass-on-ctrl="true"
|
||||||
data-bypass-on-ctrl="true"
|
data-title="{% translate "Are you sure?" %}"
|
||||||
data-title="{% translate "Are you sure?" %}"
|
data-text="{% translate "You won't be able to revert this!" %}"
|
||||||
data-text="{% translate "You won't be able to revert this!" %}"
|
data-confirm-text="{% translate "Yes, delete it!" %}"
|
||||||
data-confirm-text="{% translate "Yes, delete it!" %}"
|
_="install prompt_swal"><i class="fa-solid fa-trash fa-fw"></i>
|
||||||
_="install prompt_swal"><i class="fa-solid fa-trash fa-fw text-danger"></i>
|
|
||||||
</a>
|
</a>
|
||||||
<button class="btn btn-secondary btn-sm transaction-action" type="button" data-bs-toggle="dropdown"
|
<button class="btn btn-soft btn-sm transaction-action" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
aria-expanded="false">
|
<i class="fa-solid fa-ellipsis fa-fw"></i>
|
||||||
<i class="fa-solid fa-ellipsis fa-fw"></i>
|
</button>
|
||||||
</button>
|
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-md-start menu">
|
||||||
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-md-start">
|
<div class="absolute inset-[0rem_-3rem_-3rem_-3rem] pointer-events-auto -z-10"></div>
|
||||||
{% if transaction.account.is_untracked_by %}
|
{% if transaction.account.is_untracked_by %}
|
||||||
<li>
|
<li class="menu-disabled" aria-disabled="true">
|
||||||
<a class="dropdown-item disabled d-flex align-items-center" aria-disabled="true">
|
<a class="flex items-center">
|
||||||
<i class="fa-solid fa-eye fa-fw me-2"></i>
|
<i class="fa-solid fa-eye fa-fw mr-2"></i>
|
||||||
<div>
|
<div>
|
||||||
{% translate 'Show on summaries' %}
|
{% translate 'Show on summaries' %}
|
||||||
<div
|
<div
|
||||||
class="d-block text-body-secondary tw:text-xs tw:font-medium">{% translate 'Controlled by account' %}</div>
|
class="block text-base-content/60 text-xs font-medium">{% translate 'Controlled by account' %}</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
</li>
|
||||||
|
{% elif transaction.category.mute %}
|
||||||
|
<li class="menu-disabled" aria-disabled="true">
|
||||||
|
<a class="flex items-center">
|
||||||
|
<i class="fa-solid fa-eye fa-fw mr-2"></i>
|
||||||
|
<div>
|
||||||
|
{% translate 'Show on summaries' %}
|
||||||
|
<div
|
||||||
|
class="block text-base-content/60 text-xs font-medium">{% translate 'Controlled by category' %}</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% elif transaction.mute %}
|
||||||
|
<li><a 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 mr-2"></i>{% translate 'Show on summaries' %}</a></li>
|
||||||
|
{% else %}
|
||||||
|
<li><a 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 mr-2"></i>{% translate 'Hide from summaries' %}</a></li>
|
||||||
|
{% endif %}
|
||||||
|
<li><a href="#"
|
||||||
|
hx-get="{% url 'quick_transaction_add_as_quick_transaction' transaction_id=transaction.id %}"><i
|
||||||
|
class="fa-solid fa-person-running fa-fw mr-2"></i>{% translate 'Add as quick transaction' %}</a>
|
||||||
</li>
|
</li>
|
||||||
{% elif transaction.category.mute %}
|
<hr class="my-1 hr">
|
||||||
<li>
|
<li><a href="#"
|
||||||
<a class="dropdown-item disabled d-flex align-items-center" aria-disabled="true">
|
hx-get="{% url 'transaction_change_month' transaction_id=transaction.id change_type='previous' %}"><i
|
||||||
<i class="fa-solid fa-eye fa-fw me-2"></i>
|
class="fa-solid fa-calendar-minus fa-fw mr-2"></i>{% translate 'Move to previous month' %}</a>
|
||||||
<div>
|
|
||||||
{% translate 'Show on summaries' %}
|
|
||||||
<div
|
|
||||||
class="d-block text-body-secondary tw:text-xs tw:font-medium">{% translate 'Controlled by category' %}</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</li>
|
</li>
|
||||||
{% elif transaction.mute %}
|
<li><a href="#"
|
||||||
<li><a class="dropdown-item" href="#"
|
hx-get="{% url 'transaction_change_month' transaction_id=transaction.id change_type='next' %}"><i
|
||||||
hx-get="{% url 'transaction_mute' transaction_id=transaction.id %}"
|
class="fa-solid fa-calendar-plus fa-fw mr-2"></i>{% translate 'Move to next month' %}</a></li>
|
||||||
hx-target="closest .transaction" hx-swap="outerHTML"><i
|
<li><a href="#"
|
||||||
class="fa-solid fa-eye fa-fw me-2"></i>{% translate 'Show on summaries' %}</a></li>
|
hx-get="{% url 'transaction_move_to_today' transaction_id=transaction.id %}"><i
|
||||||
{% else %}
|
class="fa-solid fa-calendar-day fa-fw mr-2"></i>{% translate 'Move to today' %}</a></li>
|
||||||
<li><a class="dropdown-item" href="#"
|
<hr class="my-1 hr">
|
||||||
hx-get="{% url 'transaction_mute' transaction_id=transaction.id %}"
|
<li><a href="#"
|
||||||
hx-target="closest .transaction" hx-swap="outerHTML"><i
|
hx-get="{% url 'transaction_clone' transaction_id=transaction.id %}"><i
|
||||||
class="fa-solid fa-eye-slash fa-fw me-2"></i>{% translate 'Hide from summaries' %}</a></li>
|
class="fa-solid fa-clone fa-fw mr-2"></i>{% translate 'Duplicate' %}</a></li>
|
||||||
{% endif %}
|
</ul>
|
||||||
<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 %}
|
{% else %}
|
||||||
<a class="btn btn-secondary btn-sm transaction-action"
|
<div class="tooltip" data-tippy-content="{% translate "Restore" %}">
|
||||||
role="button"
|
<a class="btn btn-success btn-soft btn-sm transaction-action"
|
||||||
data-bs-toggle="tooltip"
|
role="button"
|
||||||
data-bs-title="{% translate "Restore" %}"
|
hx-get="{% url 'transaction_undelete' transaction_id=transaction.id %}"><i
|
||||||
hx-get="{% url 'transaction_undelete' transaction_id=transaction.id %}"><i
|
class="fa-solid fa-trash-arrow-up fa-fw"></i></a>
|
||||||
class="fa-solid fa-trash-arrow-up"></i></a>
|
</div>
|
||||||
<a class="btn btn-secondary btn-sm transaction-action"
|
<div class="tooltip" data-tippy-content="{% translate "Delete" %}">
|
||||||
role="button"
|
<a class="btn btn-error btn-soft btn-sm transaction-action"
|
||||||
data-bs-toggle="tooltip"
|
role="button"
|
||||||
data-bs-title="{% translate "Delete" %}"
|
hx-delete="{% url 'transaction_delete' transaction_id=transaction.id %}"
|
||||||
hx-delete="{% url 'transaction_delete' transaction_id=transaction.id %}"
|
hx-trigger='confirmed'
|
||||||
hx-trigger='confirmed'
|
data-bypass-on-ctrl="true"
|
||||||
data-bypass-on-ctrl="true"
|
data-title="{% translate "Are you sure?" %}"
|
||||||
data-title="{% translate "Are you sure?" %}"
|
data-text="{% translate "You won't be able to revert this!" %}"
|
||||||
data-text="{% translate "You won't be able to revert this!" %}"
|
data-confirm-text="{% translate "Yes, delete it!" %}"
|
||||||
data-confirm-text="{% translate "Yes, delete it!" %}"
|
_="install prompt_swal"><i class="fa-solid fa-trash fa-fw"></i>
|
||||||
_="install prompt_swal"><i class="fa-solid fa-trash fa-fw text-danger"></i>
|
</a>
|
||||||
</a>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,38 +1,38 @@
|
|||||||
<div class="card mb-2 transaction-item">
|
<div class="card bg-base-100 shadow-xl mb-2 transaction-item">
|
||||||
<div class="card-body p-2 tw:flex tw:items-center tw:gap-3" data-bs-toggle="collapse" data-bs-target="#{{ transaction.id }}" role="button" aria-expanded="false" aria-controls="{{ transaction.id }}">
|
<div class="card-body p-2 flex items-center gap-3" data-bs-toggle="collapse" data-bs-target="#{{ transaction.id }}" role="button" aria-expanded="false" aria-controls="{{ transaction.id }}">
|
||||||
<!-- Main visible content -->
|
<!-- Main visible content -->
|
||||||
<div class="tw:flex flex-lg-row flex-column tw:lg:items-center tw:w-full tw:gap-3">
|
<div class="flex flex-col lg:flex-row lg:items-center w-full gap-3">
|
||||||
<!-- Type indicator -->
|
<!-- Type indicator -->
|
||||||
<div class="tw:w-8">
|
<div class="w-8">
|
||||||
{% if transaction.type == 'IN' %}
|
{% if transaction.type == 'IN' %}
|
||||||
<span class="badge bg-success">↑</span>
|
<span class="badge badge-success">↑</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="badge bg-danger">↓</span>
|
<span class="badge badge-error">↓</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Payment status -->
|
<!-- Payment status -->
|
||||||
<div class="tw:w-8">
|
<div class="w-8">
|
||||||
{% if transaction.is_paid %}
|
{% if transaction.is_paid %}
|
||||||
<span class="badge bg-success">✓</span>
|
<span class="badge badge-success">✓</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="badge bg-warning">○</span>
|
<span class="badge badge-warning">○</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Description -->
|
<!-- Description -->
|
||||||
<div class="tw:flex-grow">
|
<div class="flex-grow">
|
||||||
<span class="tw:font-medium">{{ transaction.description }}</span>
|
<span class="font-medium">{{ transaction.description }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Amount -->
|
<!-- Amount -->
|
||||||
<div class="tw:text-right tw:whitespace-nowrap">
|
<div class="text-right whitespace-nowrap">
|
||||||
<span class="{% if transaction.type == 'IN' %}tw:text-green-400{% else %}tw:text-red-400{% endif %}">
|
<span class="{% if transaction.type == 'IN' %}text-green-400{% else %}text-red-400{% endif %}">
|
||||||
{{ transaction.amount }}
|
{{ transaction.amount }}
|
||||||
</span>
|
</span>
|
||||||
{% if transaction.exchanged_amount %}
|
{% if transaction.exchanged_amount %}
|
||||||
<br>
|
<br>
|
||||||
<small class="text-muted">
|
<small class="text-base-content/60">
|
||||||
{{ transaction.exchanged_amount.prefix }}{{ transaction.exchanged_amount.amount }}{{ transaction.exchanged_amount.suffix }}
|
{{ transaction.exchanged_amount.prefix }}{{ transaction.exchanged_amount.amount }}{{ transaction.exchanged_amount.suffix }}
|
||||||
</small>
|
</small>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -43,48 +43,48 @@
|
|||||||
<!-- Expandable details -->
|
<!-- Expandable details -->
|
||||||
<div class="collapse" id="{{ transaction.id }}">
|
<div class="collapse" id="{{ transaction.id }}">
|
||||||
<div class="card-body p-3 transaction-details">
|
<div class="card-body p-3 transaction-details">
|
||||||
<div class="row">
|
<div class="grid grid-cols-1 md:grid-cols-2">
|
||||||
<div class="col-md-6">
|
<div>
|
||||||
<dl class="row">
|
<dl class="grid grid-cols-3">
|
||||||
<dt class="col-sm-4">Date</dt>
|
<dt class="col-span-1">Date</dt>
|
||||||
<dd class="col-sm-8">{{ transaction.date|date:"Y-m-d" }}</dd>
|
<dd class="col-span-2">{{ transaction.date|date:"Y-m-d" }}</dd>
|
||||||
|
|
||||||
<dt class="col-sm-4">Reference Date</dt>
|
<dt class="col-span-1">Reference Date</dt>
|
||||||
<dd class="col-sm-8">{{ transaction.reference_date|date:"Y-m" }}</dd>
|
<dd class="col-span-2">{{ transaction.reference_date|date:"Y-m" }}</dd>
|
||||||
|
|
||||||
<dt class="col-sm-4">Account</dt>
|
<dt class="col-span-1">Account</dt>
|
||||||
<dd class="col-sm-8">{{ transaction.account.name }}</dd>
|
<dd class="col-span-2">{{ transaction.account.name }}</dd>
|
||||||
|
|
||||||
<dt class="col-sm-4">Category</dt>
|
<dt class="col-span-1">Category</dt>
|
||||||
<dd class="col-sm-8">{{ transaction.category|default:"-" }}</dd>
|
<dd class="col-span-2">{{ transaction.category|default:"-" }}</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div>
|
||||||
<dl class="row">
|
<dl class="grid grid-cols-3">
|
||||||
{% if transaction.tags.exists %}
|
{% if transaction.tags.exists %}
|
||||||
<dt class="col-sm-4">Tags</dt>
|
<dt class="col-span-1">Tags</dt>
|
||||||
<dd class="col-sm-8">
|
<dd class="col-span-2">
|
||||||
{% for tag in transaction.tags.all %}
|
{% for tag in transaction.tags.all %}
|
||||||
<span class="badge bg-secondary">{{ tag.name }}</span>
|
<span class="badge badge-secondary">{{ tag.name }}</span>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</dd>
|
</dd>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if transaction.installment_plan %}
|
{% if transaction.installment_plan %}
|
||||||
<dt class="col-sm-4">Installment</dt>
|
<dt class="col-span-1">Installment</dt>
|
||||||
<dd class="col-sm-8">
|
<dd class="col-span-2">
|
||||||
{{ transaction.installment_id }} of {{ transaction.installment_plan.total_installments }}
|
{{ transaction.installment_id }} of {{ transaction.installment_plan.total_installments }}
|
||||||
</dd>
|
</dd>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if transaction.recurring_transaction %}
|
{% if transaction.recurring_transaction %}
|
||||||
<dt class="col-sm-4">Recurring</dt>
|
<dt class="col-span-1">Recurring</dt>
|
||||||
<dd class="col-sm-8">Yes</dd>
|
<dd class="col-span-2">Yes</dd>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if transaction.notes %}
|
{% if transaction.notes %}
|
||||||
<dt class="col-sm-4">Notes</dt>
|
<dt class="col-span-1">Notes</dt>
|
||||||
<dd class="col-sm-8">{{ transaction.notes }}</dd>
|
<dd class="col-span-2">{{ transaction.notes }}</dd>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,194 +1,166 @@
|
|||||||
{% load tools %}
|
{% load tools %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="col card shadow">
|
<div class="card bg-base-100 shadow-md card-border border-base-300">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
{% if account.account.group %}
|
<h5 class="card-title mb-4">
|
||||||
<div class="tw:text-sm mb-2">
|
{% if account.account.group %}<span class="badge badge-primary badge-outline">{{ account.account.group }}</span>{% endif %} {{ account.account.name }}
|
||||||
<span class="badge text-bg-primary ">{{ account.account.group }}</span>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<h5 class="card-title">
|
|
||||||
{{ account.account.name }}
|
|
||||||
</h5>
|
</h5>
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="card-data-section">
|
||||||
<div class="text-end font-monospace">
|
<div class="card-data-row">
|
||||||
<div class="tw:text-gray-400">{% translate 'projected income' %}</div>
|
<span class="card-data-label">{% translate 'projected income' %}</span>
|
||||||
|
<div class="card-data-values">
|
||||||
|
{% if account.income_projected != 0 %}
|
||||||
|
<c-amount.display
|
||||||
|
:amount="account.income_projected"
|
||||||
|
:prefix="account.currency.prefix"
|
||||||
|
:suffix="account.currency.suffix"
|
||||||
|
:decimal_places="account.currency.decimal_places"
|
||||||
|
color="green"></c-amount.display>
|
||||||
|
{% if account.exchanged and account.exchanged.income_projected %}
|
||||||
|
<c-amount.display
|
||||||
|
:amount="account.exchanged.income_projected"
|
||||||
|
:prefix="account.exchanged.currency.prefix"
|
||||||
|
:suffix="account.exchanged.currency.suffix"
|
||||||
|
:decimal_places="account.exchanged.currency.decimal_places"
|
||||||
|
color="gray"></c-amount.display>
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
<span class="font-semibold">-</span>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="card-data-row">
|
||||||
{% if account.income_projected != 0 %}
|
<span class="card-data-label">{% translate 'projected expenses' %}</span>
|
||||||
<div class="text-end font-monospace tw:text-green-400">
|
<div class="card-data-values">
|
||||||
<c-amount.display
|
{% if account.expense_projected != 0 %}
|
||||||
:amount="account.income_projected"
|
<c-amount.display
|
||||||
:prefix="account.currency.prefix"
|
:amount="account.expense_projected"
|
||||||
:suffix="account.currency.suffix"
|
:prefix="account.currency.prefix"
|
||||||
:decimal_places="account.currency.decimal_places"></c-amount.display>
|
:suffix="account.currency.suffix"
|
||||||
|
:decimal_places="account.currency.decimal_places"
|
||||||
|
color="red"></c-amount.display>
|
||||||
|
{% if account.exchanged and account.exchanged.expense_projected %}
|
||||||
|
<c-amount.display
|
||||||
|
:amount="account.exchanged.expense_projected"
|
||||||
|
:prefix="account.exchanged.currency.prefix"
|
||||||
|
:suffix="account.exchanged.currency.suffix"
|
||||||
|
:decimal_places="account.exchanged.currency.decimal_places"
|
||||||
|
color="gray"></c-amount.display>
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
<span class="font-semibold">-</span>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
<div class="card-data-row">
|
||||||
<div class="text-end font-monospace">-</div>
|
<span class="card-data-label">{% translate 'projected total' %}</span>
|
||||||
{% endif %}
|
<div class="card-data-values">
|
||||||
</div>
|
|
||||||
{% if account.exchanged and account.exchanged.income_projected %}
|
|
||||||
<div class="text-end font-monospace tw:text-gray-500">
|
|
||||||
<c-amount.display
|
|
||||||
:amount="account.exchanged.income_projected"
|
|
||||||
:prefix="account.exchanged.currency.prefix"
|
|
||||||
:suffix="account.exchanged.currency.suffix"
|
|
||||||
:decimal_places="account.exchanged.currency.decimal_places"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
|
||||||
<div class="text-end font-monospace">
|
|
||||||
<div class="tw:text-gray-400">{% translate 'projected expenses' %}</div>
|
|
||||||
</div>
|
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
|
||||||
<div>
|
|
||||||
{% if account.expense_projected != 0 %}
|
|
||||||
<div class="text-end font-monospace tw:text-red-400">
|
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="account.expense_projected"
|
:amount="account.total_projected"
|
||||||
:prefix="account.currency.prefix"
|
:prefix="account.currency.prefix"
|
||||||
:suffix="account.currency.suffix"
|
:suffix="account.currency.suffix"
|
||||||
:decimal_places="account.currency.decimal_places"></c-amount.display>
|
:decimal_places="account.currency.decimal_places"
|
||||||
|
color="{% if account.total_projected > 0 %}green{% elif account.total_projected < 0 %}red{% endif %}"></c-amount.display>
|
||||||
|
{% if account.exchanged.total_projected and account.exchanged.total_projected %}
|
||||||
|
<c-amount.display
|
||||||
|
:amount="account.exchanged.total_projected"
|
||||||
|
:prefix="account.exchanged.currency.prefix"
|
||||||
|
:suffix="account.exchanged.currency.suffix"
|
||||||
|
:decimal_places="account.exchanged.currency.decimal_places"
|
||||||
|
color="gray"></c-amount.display>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
|
||||||
<div class="text-end font-monospace">-</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if account.exchanged and account.exchanged.expense_projected %}
|
<hr class="card-data-divider" />
|
||||||
<div class="text-end font-monospace tw:text-gray-500">
|
<div class="card-data-section">
|
||||||
<c-amount.display
|
<div class="card-data-row">
|
||||||
:amount="account.exchanged.expense_projected"
|
<span class="card-data-label">{% translate 'current income' %}</span>
|
||||||
:prefix="account.exchanged.currency.prefix"
|
<div class="card-data-values">
|
||||||
:suffix="account.exchanged.currency.suffix"
|
{% if account.income_current != 0 %}
|
||||||
:decimal_places="account.exchanged.currency.decimal_places"></c-amount.display>
|
<c-amount.display
|
||||||
</div>
|
:amount="account.income_current"
|
||||||
{% endif %}
|
:prefix="account.currency.prefix"
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
:suffix="account.currency.suffix"
|
||||||
<div class="text-end font-monospace">
|
:decimal_places="account.currency.decimal_places"
|
||||||
<div class="tw:text-gray-400">{% translate 'projected total' %}</div>
|
color="green"></c-amount.display>
|
||||||
</div>
|
{% if account.exchanged and account.exchanged.income_current %}
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<c-amount.display
|
||||||
<div
|
:amount="account.exchanged.income_current"
|
||||||
class="text-end font-monospace">
|
:prefix="account.exchanged.currency.prefix"
|
||||||
<c-amount.display
|
:suffix="account.exchanged.currency.suffix"
|
||||||
:amount="account.total_projected"
|
:decimal_places="account.exchanged.currency.decimal_places"
|
||||||
:prefix="account.currency.prefix"
|
color="gray"></c-amount.display>
|
||||||
:suffix="account.currency.suffix"
|
{% endif %}
|
||||||
:decimal_places="account.currency.decimal_places"
|
{% else %}
|
||||||
color="{% if account.total_projected > 0 %}green{% elif account.total_projected < 0 %}red{% endif %}"></c-amount.display>
|
<span class="font-semibold">-</span>
|
||||||
</div>
|
{% endif %}
|
||||||
</div>
|
|
||||||
{% if account.exchanged.total_projected and account.exchanged.total_projected %}
|
|
||||||
<div class="text-end font-monospace tw:text-gray-500">
|
|
||||||
<c-amount.display
|
|
||||||
:amount="account.exchanged.total_projected"
|
|
||||||
:prefix="account.exchanged.currency.prefix"
|
|
||||||
:suffix="account.exchanged.currency.suffix"
|
|
||||||
:decimal_places="account.exchanged.currency.decimal_places"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<hr class="my-3">
|
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
|
||||||
<div class="text-end font-monospace">
|
|
||||||
<div class="tw:text-gray-400">{% translate 'current income' %}</div>
|
|
||||||
</div>
|
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
|
||||||
{% if account.income_current != 0 %}
|
|
||||||
<div class="text-end font-monospace tw:text-green-400">
|
|
||||||
<c-amount.display
|
|
||||||
:amount="account.income_current"
|
|
||||||
:prefix="account.currency.prefix"
|
|
||||||
:suffix="account.currency.suffix"
|
|
||||||
:decimal_places="account.currency.decimal_places"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<div class="text-end font-monospace">-</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% if account.exchanged and account.exchanged.income_current %}
|
|
||||||
<div class="text-end font-monospace tw:text-gray-500">
|
|
||||||
<c-amount.display
|
|
||||||
:amount="account.exchanged.income_current"
|
|
||||||
:prefix="account.exchanged.currency.prefix"
|
|
||||||
:suffix="account.exchanged.currency.suffix"
|
|
||||||
:decimal_places="account.exchanged.currency.decimal_places"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
|
||||||
<div class="text-end font-monospace">
|
|
||||||
<div class="tw:text-gray-400">{% translate 'current expenses' %}</div>
|
|
||||||
</div>
|
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
|
||||||
{% if account.expense_current != 0 %}
|
|
||||||
<div class="text-end font-monospace tw:text-red-400">
|
|
||||||
<c-amount.display
|
|
||||||
:amount="account.expense_current"
|
|
||||||
:prefix="account.currency.prefix"
|
|
||||||
:suffix="account.currency.suffix"
|
|
||||||
:decimal_places="account.currency.decimal_places"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<div class="text-end font-monospace">-</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% if account.exchanged and account.exchanged.expense_current %}
|
|
||||||
<div class="text-end font-monospace tw:text-gray-500">
|
|
||||||
<c-amount.display
|
|
||||||
:amount="account.exchanged.expense_current"
|
|
||||||
:prefix="account.exchanged.currency.prefix"
|
|
||||||
:suffix="account.exchanged.currency.suffix"
|
|
||||||
:decimal_places="account.exchanged.currency.decimal_places"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
|
||||||
<div class="text-end font-monospace">
|
|
||||||
<div class="tw:text-gray-400">{% translate 'current total' %}</div>
|
|
||||||
</div>
|
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
|
||||||
<div class="text-end font-monospace">
|
|
||||||
<c-amount.display
|
|
||||||
:amount="account.total_current"
|
|
||||||
:prefix="account.currency.prefix"
|
|
||||||
:suffix="account.currency.suffix"
|
|
||||||
:decimal_places="account.currency.decimal_places"
|
|
||||||
color="{% if account.total_current > 0 %}green{% elif account.total_current < 0 %}red{% endif %}"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% if account.exchanged and account.exchanged.total_current %}
|
|
||||||
<div class="text-end font-monospace tw:text-gray-500">
|
|
||||||
<c-amount.display
|
|
||||||
:amount="account.exchanged.total_current"
|
|
||||||
:prefix="account.exchanged.currency.prefix"
|
|
||||||
:suffix="account.exchanged.currency.suffix"
|
|
||||||
:decimal_places="account.exchanged.currency.decimal_places"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<div>
|
|
||||||
<hr class="my-3">
|
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
|
||||||
<div class="text-end font-monospace">
|
|
||||||
<div class="tw:text-gray-400">{% translate 'final total' %}</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
</div>
|
||||||
<div class="text-end font-monospace">
|
<div class="card-data-row">
|
||||||
|
<span class="card-data-label">{% translate 'current expenses' %}</span>
|
||||||
|
<div class="card-data-values">
|
||||||
|
{% if account.expense_current != 0 %}
|
||||||
|
<c-amount.display
|
||||||
|
:amount="account.expense_current"
|
||||||
|
:prefix="account.currency.prefix"
|
||||||
|
:suffix="account.currency.suffix"
|
||||||
|
:decimal_places="account.currency.decimal_places"
|
||||||
|
color="red"></c-amount.display>
|
||||||
|
{% if account.exchanged and account.exchanged.expense_current %}
|
||||||
|
<c-amount.display
|
||||||
|
:amount="account.exchanged.expense_current"
|
||||||
|
:prefix="account.exchanged.currency.prefix"
|
||||||
|
:suffix="account.exchanged.currency.suffix"
|
||||||
|
:decimal_places="account.exchanged.currency.decimal_places"
|
||||||
|
color="gray"></c-amount.display>
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
<span class="font-semibold">-</span>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-data-row">
|
||||||
|
<span class="card-data-label">{% translate 'current total' %}</span>
|
||||||
|
<div class="card-data-values">
|
||||||
|
<c-amount.display
|
||||||
|
:amount="account.total_current"
|
||||||
|
:prefix="account.currency.prefix"
|
||||||
|
:suffix="account.currency.suffix"
|
||||||
|
:decimal_places="account.currency.decimal_places"
|
||||||
|
color="{% if account.total_current > 0 %}green{% elif account.total_current < 0 %}red{% endif %}"></c-amount.display>
|
||||||
|
{% if account.exchanged and account.exchanged.total_current %}
|
||||||
|
<c-amount.display
|
||||||
|
:amount="account.exchanged.total_current"
|
||||||
|
:prefix="account.exchanged.currency.prefix"
|
||||||
|
:suffix="account.exchanged.currency.suffix"
|
||||||
|
:decimal_places="account.exchanged.currency.decimal_places"
|
||||||
|
color="gray"></c-amount.display>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr class="card-data-divider" />
|
||||||
|
<div class="card-data-section">
|
||||||
|
<div class="card-data-row">
|
||||||
|
<span class="card-data-label">{% translate 'final total' %}</span>
|
||||||
|
<div class="card-data-values">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="account.total_final"
|
:amount="account.total_final"
|
||||||
:prefix="account.currency.prefix"
|
:prefix="account.currency.prefix"
|
||||||
:suffix="account.currency.suffix"
|
:suffix="account.currency.suffix"
|
||||||
:decimal_places="account.currency.decimal_places"
|
:decimal_places="account.currency.decimal_places"
|
||||||
color="{% if account.total_final > 0 %}green{% elif account.total_final < 0 %}red{% endif %}"></c-amount.display>
|
color="{% if account.total_final > 0 %}green{% elif account.total_final < 0 %}red{% endif %}"></c-amount.display>
|
||||||
|
{% if account.exchanged and account.exchanged.total_final %}
|
||||||
|
<c-amount.display
|
||||||
|
:amount="account.exchanged.total_final"
|
||||||
|
:prefix="account.exchanged.currency.prefix"
|
||||||
|
:suffix="account.exchanged.currency.suffix"
|
||||||
|
:decimal_places="account.exchanged.currency.decimal_places"
|
||||||
|
color="gray"></c-amount.display>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if account.exchanged and account.exchanged.total_final %}
|
|
||||||
<div class="text-end font-monospace tw:text-gray-500">
|
|
||||||
<c-amount.display
|
|
||||||
:amount="account.exchanged.total_final"
|
|
||||||
:prefix="account.exchanged.currency.prefix"
|
|
||||||
:suffix="account.exchanged.currency.suffix"
|
|
||||||
:decimal_places="account.exchanged.currency.decimal_places"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
{% with p=percentages|get_dict_item:account_id %}
|
{% with p=percentages|get_dict_item:account_id %}
|
||||||
<div class="my-3">
|
<div class="my-3">
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="card tw:relative h-100 shadow">
|
<div class="card bg-base-100 shadow-xl relative h-full">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
{{ slot }}
|
{{ slot }}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
<div class="bg-base-100 border-base-300 border-2 join-item {{ base_classes }}"
|
||||||
|
x-data="{ expanded: {% if active %}true{% else %}false{% endif %} }">
|
||||||
|
|
||||||
|
<div class="font-medium text-sm cursor-pointer p-4 flex w-full items-center justify-between gap-4 text-left {{ title_classes }}"
|
||||||
|
@click="expanded = ! expanded">
|
||||||
|
|
||||||
|
<div>
|
||||||
|
{{ title }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke="currentColor" class="size-5 shrink-0 transition" aria-hidden="true" x-bind:class="expanded ? 'rotate-180' : ''">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 8.25l-7.5 7.5-7.5-7.5"></path>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="bg-base-200 p-4 {{ content_classes }}"
|
||||||
|
x-show="expanded"
|
||||||
|
x-collapse>
|
||||||
|
{{ content }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -1,188 +1,166 @@
|
|||||||
{% load tools %}
|
{% load tools %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="col card shadow">
|
<div class="col card bg-base-100 shadow card-border">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title">
|
<h5 class="card-title mb-4">
|
||||||
{{ currency.currency.name }}
|
{{ currency.currency.name }}
|
||||||
</h5>
|
</h5>
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
<div class="card-data-section">
|
||||||
<div class="text-end font-monospace">
|
<div class="card-data-row">
|
||||||
<div class="tw:text-gray-400">{% translate 'projected income' %}</div>
|
<span class="card-data-label">{% translate 'projected income' %}</span>
|
||||||
|
<div class="card-data-values">
|
||||||
|
{% if 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>
|
||||||
|
{% if currency.exchanged and currency.exchanged.income_projected %}
|
||||||
|
<c-amount.display
|
||||||
|
:amount="currency.exchanged.income_projected"
|
||||||
|
:prefix="currency.exchanged.currency.prefix"
|
||||||
|
:suffix="currency.exchanged.currency.suffix"
|
||||||
|
:decimal_places="currency.exchanged.currency.decimal_places"
|
||||||
|
color="gray"></c-amount.display>
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
<span class="font-semibold">-</span>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<div class="card-data-row">
|
||||||
{% if currency.income_projected != 0 %}
|
<span class="card-data-label">{% translate 'projected expenses' %}</span>
|
||||||
<div class="text-end font-monospace tw:text-green-400">
|
<div class="card-data-values">
|
||||||
<c-amount.display
|
{% if currency.expense_projected != 0 %}
|
||||||
:amount="currency.income_projected"
|
<c-amount.display
|
||||||
:prefix="currency.currency.prefix"
|
:amount="currency.expense_projected"
|
||||||
:suffix="currency.currency.suffix"
|
:prefix="currency.currency.prefix"
|
||||||
:decimal_places="currency.currency.decimal_places"></c-amount.display>
|
:suffix="currency.currency.suffix"
|
||||||
|
:decimal_places="currency.currency.decimal_places"
|
||||||
|
color="red"></c-amount.display>
|
||||||
|
{% if currency.exchanged and currency.exchanged.expense_projected %}
|
||||||
|
<c-amount.display
|
||||||
|
:amount="currency.exchanged.expense_projected"
|
||||||
|
:prefix="currency.exchanged.currency.prefix"
|
||||||
|
:suffix="currency.exchanged.currency.suffix"
|
||||||
|
:decimal_places="currency.exchanged.currency.decimal_places"
|
||||||
|
color="gray"></c-amount.display>
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
<span class="font-semibold">-</span>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
<div class="card-data-row">
|
||||||
<div class="text-end font-monospace">-</div>
|
<span class="card-data-label">{% translate 'projected total' %}</span>
|
||||||
{% endif %}
|
<div class="card-data-values">
|
||||||
</div>
|
|
||||||
{% if currency.exchanged and currency.exchanged.income_projected %}
|
|
||||||
<div class="text-end font-monospace tw:text-gray-500">
|
|
||||||
<c-amount.display
|
|
||||||
:amount="currency.exchanged.income_projected"
|
|
||||||
:prefix="currency.exchanged.currency.prefix"
|
|
||||||
:suffix="currency.exchanged.currency.suffix"
|
|
||||||
:decimal_places="currency.exchanged.currency.decimal_places"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
|
||||||
<div class="text-end font-monospace">
|
|
||||||
<div class="tw:text-gray-400">{% translate 'projected expenses' %}</div>
|
|
||||||
</div>
|
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
|
||||||
<div>
|
|
||||||
{% if currency.expense_projected != 0 %}
|
|
||||||
<div class="text-end font-monospace tw:text-red-400">
|
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="currency.expense_projected"
|
:amount="currency.total_projected"
|
||||||
:prefix="currency.currency.prefix"
|
:prefix="currency.currency.prefix"
|
||||||
:suffix="currency.currency.suffix"
|
:suffix="currency.currency.suffix"
|
||||||
:decimal_places="currency.currency.decimal_places"></c-amount.display>
|
:decimal_places="currency.currency.decimal_places"
|
||||||
|
color="{% if currency.total_projected > 0 %}green{% elif currency.total_projected < 0 %}red{% endif %}"></c-amount.display>
|
||||||
|
{% if currency.exchanged.total_projected and currency.exchanged.total_projected %}
|
||||||
|
<c-amount.display
|
||||||
|
:amount="currency.exchanged.total_projected"
|
||||||
|
:prefix="currency.exchanged.currency.prefix"
|
||||||
|
:suffix="currency.exchanged.currency.suffix"
|
||||||
|
:decimal_places="currency.exchanged.currency.decimal_places"
|
||||||
|
color="gray"></c-amount.display>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
|
||||||
<div class="text-end font-monospace">-</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if currency.exchanged and currency.exchanged.expense_projected %}
|
<hr class="card-data-divider" />
|
||||||
<div class="text-end font-monospace tw:text-gray-500">
|
<div class="card-data-section">
|
||||||
<c-amount.display
|
<div class="card-data-row">
|
||||||
:amount="currency.exchanged.expense_projected"
|
<span class="card-data-label">{% translate 'current income' %}</span>
|
||||||
:prefix="currency.exchanged.currency.prefix"
|
<div class="card-data-values">
|
||||||
:suffix="currency.exchanged.currency.suffix"
|
{% if currency.income_current != 0 %}
|
||||||
:decimal_places="currency.exchanged.currency.decimal_places"></c-amount.display>
|
<c-amount.display
|
||||||
</div>
|
:amount="currency.income_current"
|
||||||
{% endif %}
|
:prefix="currency.currency.prefix"
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
:suffix="currency.currency.suffix"
|
||||||
<div class="text-end font-monospace">
|
:decimal_places="currency.currency.decimal_places"
|
||||||
<div class="tw:text-gray-400">{% translate 'projected total' %}</div>
|
color="green"></c-amount.display>
|
||||||
</div>
|
{% if currency.exchanged and currency.exchanged.income_current %}
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
<c-amount.display
|
||||||
<div class="text-end font-monospace">
|
:amount="currency.exchanged.income_current"
|
||||||
<c-amount.display
|
:prefix="currency.exchanged.currency.prefix"
|
||||||
:amount="currency.total_projected"
|
:suffix="currency.exchanged.currency.suffix"
|
||||||
:prefix="currency.currency.prefix"
|
:decimal_places="currency.exchanged.currency.decimal_places"
|
||||||
:suffix="currency.currency.suffix"
|
color="gray"></c-amount.display>
|
||||||
:decimal_places="currency.currency.decimal_places"
|
{% endif %}
|
||||||
color="{% if currency.total_projected > 0 %}green{% elif currency.total_projected < 0 %}red{% endif %}"></c-amount.display>
|
{% else %}
|
||||||
</div>
|
<span class="font-semibold">-</span>
|
||||||
</div>
|
{% endif %}
|
||||||
{% if currency.exchanged.total_projected and currency.exchanged.total_projected %}
|
|
||||||
<div class="text-end font-monospace tw:text-gray-500">
|
|
||||||
<c-amount.display
|
|
||||||
:amount="currency.exchanged.total_projected"
|
|
||||||
:prefix="currency.exchanged.currency.prefix"
|
|
||||||
:suffix="currency.exchanged.currency.suffix"
|
|
||||||
:decimal_places="currency.exchanged.currency.decimal_places"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<hr class="my-3">
|
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
|
||||||
<div class="text-end font-monospace">
|
|
||||||
<div class="tw:text-gray-400">{% translate 'current income' %}</div>
|
|
||||||
</div>
|
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
|
||||||
{% if currency.income_current != 0 %}
|
|
||||||
<div class="text-end font-monospace tw:text-green-400">
|
|
||||||
<c-amount.display
|
|
||||||
:amount="currency.income_current"
|
|
||||||
:prefix="currency.currency.prefix"
|
|
||||||
:suffix="currency.currency.suffix"
|
|
||||||
:decimal_places="currency.currency.decimal_places"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<div class="text-end font-monospace">-</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% if currency.exchanged and currency.exchanged.income_current %}
|
|
||||||
<div class="text-end font-monospace tw:text-gray-500">
|
|
||||||
<c-amount.display
|
|
||||||
:amount="currency.exchanged.income_current"
|
|
||||||
:prefix="currency.exchanged.currency.prefix"
|
|
||||||
:suffix="currency.exchanged.currency.suffix"
|
|
||||||
:decimal_places="currency.exchanged.currency.decimal_places"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
|
||||||
<div class="text-end font-monospace">
|
|
||||||
<div class="tw:text-gray-400">{% translate 'current expenses' %}</div>
|
|
||||||
</div>
|
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
|
||||||
{% if currency.expense_current != 0 %}
|
|
||||||
<div class="text-end font-monospace tw:text-red-400">
|
|
||||||
<c-amount.display
|
|
||||||
:amount="currency.expense_current"
|
|
||||||
:prefix="currency.currency.prefix"
|
|
||||||
:suffix="currency.currency.suffix"
|
|
||||||
:decimal_places="currency.currency.decimal_places"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<div class="text-end font-monospace">-</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% if currency.exchanged and currency.exchanged.expense_current %}
|
|
||||||
<div class="text-end font-monospace tw:text-gray-500">
|
|
||||||
<c-amount.display
|
|
||||||
:amount="currency.exchanged.expense_current"
|
|
||||||
:prefix="currency.exchanged.currency.prefix"
|
|
||||||
:suffix="currency.exchanged.currency.suffix"
|
|
||||||
:decimal_places="currency.exchanged.currency.decimal_places"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
|
||||||
<div class="text-end font-monospace">
|
|
||||||
<div class="tw:text-gray-400">{% translate 'current total' %}</div>
|
|
||||||
</div>
|
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
|
||||||
<div class="text-end font-monospace">
|
|
||||||
<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_current > 0 %}green{% elif currency.total_current < 0 %}red{% endif %}"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% if currency.exchanged and currency.exchanged.total_current %}
|
|
||||||
<div class="text-end font-monospace tw:text-gray-500">
|
|
||||||
<c-amount.display
|
|
||||||
:amount="currency.exchanged.total_current"
|
|
||||||
:prefix="currency.exchanged.currency.prefix"
|
|
||||||
:suffix="currency.exchanged.currency.suffix"
|
|
||||||
:decimal_places="currency.exchanged.currency.decimal_places"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<div>
|
|
||||||
<hr class="my-3">
|
|
||||||
<div class="d-flex justify-content-between align-items-baseline mt-2">
|
|
||||||
<div class="text-end font-monospace">
|
|
||||||
<div class="tw:text-gray-400">{% translate 'final total' %}</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="dotted-line flex-grow-1"></div>
|
</div>
|
||||||
<div class="text-end font-monospace">
|
<div class="card-data-row">
|
||||||
|
<span class="card-data-label">{% translate 'current expenses' %}</span>
|
||||||
|
<div class="card-data-values">
|
||||||
|
{% if 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>
|
||||||
|
{% if currency.exchanged and currency.exchanged.expense_current %}
|
||||||
|
<c-amount.display
|
||||||
|
:amount="currency.exchanged.expense_current"
|
||||||
|
:prefix="currency.exchanged.currency.prefix"
|
||||||
|
:suffix="currency.exchanged.currency.suffix"
|
||||||
|
:decimal_places="currency.exchanged.currency.decimal_places"
|
||||||
|
color="gray"></c-amount.display>
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
<span class="font-semibold">-</span>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-data-row">
|
||||||
|
<span class="card-data-label">{% translate 'current total' %}</span>
|
||||||
|
<div class="card-data-values">
|
||||||
|
<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_current > 0 %}green{% elif currency.total_current < 0 %}red{% endif %}"></c-amount.display>
|
||||||
|
{% if currency.exchanged and currency.exchanged.total_current %}
|
||||||
|
<c-amount.display
|
||||||
|
:amount="currency.exchanged.total_current"
|
||||||
|
:prefix="currency.exchanged.currency.prefix"
|
||||||
|
:suffix="currency.exchanged.currency.suffix"
|
||||||
|
:decimal_places="currency.exchanged.currency.decimal_places"
|
||||||
|
color="gray"></c-amount.display>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr class="card-data-divider" />
|
||||||
|
<div class="card-data-section">
|
||||||
|
<div class="card-data-row">
|
||||||
|
<span class="card-data-label">{% translate 'final total' %}</span>
|
||||||
|
<div class="card-data-values">
|
||||||
<c-amount.display
|
<c-amount.display
|
||||||
:amount="currency.total_final"
|
:amount="currency.total_final"
|
||||||
:prefix="currency.currency.prefix"
|
:prefix="currency.currency.prefix"
|
||||||
:suffix="currency.currency.suffix"
|
:suffix="currency.currency.suffix"
|
||||||
:decimal_places="currency.currency.decimal_places"
|
:decimal_places="currency.currency.decimal_places"
|
||||||
color="{% if currency.total_final > 0 %}green{% elif currency.total_final < 0 %}red{% endif %}"></c-amount.display>
|
color="{% if currency.total_final > 0 %}green{% elif currency.total_final < 0 %}red{% endif %}"></c-amount.display>
|
||||||
|
{% if currency.exchanged and currency.exchanged.total_final %}
|
||||||
|
<c-amount.display
|
||||||
|
:amount="currency.exchanged.total_final"
|
||||||
|
:prefix="currency.exchanged.currency.prefix"
|
||||||
|
:suffix="currency.exchanged.currency.suffix"
|
||||||
|
:decimal_places="currency.exchanged.currency.decimal_places"
|
||||||
|
color="gray"></c-amount.display>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if currency.exchanged and currency.exchanged.total_final %}
|
|
||||||
<div class="text-end font-monospace tw:text-gray-500">
|
|
||||||
<c-amount.display
|
|
||||||
:amount="currency.exchanged.total_final"
|
|
||||||
:prefix="currency.exchanged.currency.prefix"
|
|
||||||
:suffix="currency.exchanged.currency.suffix"
|
|
||||||
:decimal_places="currency.exchanged.currency.decimal_places"></c-amount.display>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
{% with p=percentages|get_dict_item:currency_id %}
|
{% with p=percentages|get_dict_item:currency_id %}
|
||||||
<div class="my-3">
|
<div class="my-3">
|
||||||
|
|||||||
@@ -1,67 +1,69 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="tw:sticky tw:bottom-4 tw:left-0 tw:right-0 tw:z-50 tw:hidden mx-auto tw:w-fit" id="actions-bar"
|
<div class="sticky bottom-4 left-0 right-0 z-1000 hidden mx-auto w-fit" id="actions-bar"
|
||||||
_="on change from #transactions-list or htmx:afterSettle from window
|
_="on change from #transactions-list or htmx:afterSettle from window
|
||||||
if #actions-bar then
|
if #actions-bar then
|
||||||
if no <input[type='checkbox']:checked/> in #transactions-list
|
if no <input[type='checkbox']:checked/> in #transactions-list
|
||||||
if #actions-bar
|
if #actions-bar
|
||||||
add .slide-in-bottom-reverse then settle
|
add .slide-in-bottom-reverse then settle
|
||||||
then add .tw:hidden to #actions-bar
|
then add .hidden to #actions-bar
|
||||||
then remove .slide-in-bottom-reverse
|
then remove .slide-in-bottom-reverse
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if #actions-bar
|
if #actions-bar
|
||||||
remove .tw:hidden from #actions-bar
|
set #selected-count's innerHTML to length of <input[type='checkbox']:checked/> in #transactions-list
|
||||||
|
then remove .hidden from #actions-bar
|
||||||
then trigger selected_transactions_updated
|
then trigger selected_transactions_updated
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end">
|
end">
|
||||||
<div class="card slide-in-bottom">
|
<div class="card bg-base-300 shadow slide-in-bottom max-w-[90vw] card-border">
|
||||||
<div class="card-body p-2 d-flex justify-content-between align-items-center gap-3">
|
<div class="card-body flex-row p-2 flex justify-between items-center gap-3 overflow-x-auto">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div class="dropdown">
|
<div class="font-bold text-md ms-2" id="selected-count">0</div>
|
||||||
<button class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-bs-toggle="dropdown"
|
<div class="divider divider-horizontal m-0"></div>
|
||||||
aria-expanded="false">
|
<div>
|
||||||
|
<button role="button" class="btn btn-secondary btn-sm" type="button"
|
||||||
|
data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
<i class="fa-regular fa-square-check fa-fw"></i>
|
<i class="fa-regular fa-square-check fa-fw"></i>
|
||||||
|
<i class="fa-solid fa-chevron-down fa-xs"></i>
|
||||||
</button>
|
</button>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu menu">
|
||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
<a class="cursor-pointer"
|
||||||
_="on click set <#transactions-list input[type='checkbox']/>'s checked to true then call me.blur() then trigger change">
|
_="on click set <#transactions-list .transaction:not([style*='display: none']) input[type='checkbox']/>'s checked to true then call me.blur() then trigger change">
|
||||||
<i class="fa-regular fa-square-check tw:text-green-400 me-3"></i>{% translate 'Select All' %}
|
<i class="fa-regular fa-square-check text-success me-3"></i>{% translate 'Select All' %}
|
||||||
</div>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
<a class="cursor-pointer"
|
||||||
_="on click set <#transactions-list input[type='checkbox']/>'s checked to false then call me.blur() then trigger change">
|
_="on click set <#transactions-list input[type='checkbox']/>'s checked to false then call me.blur() then trigger change">
|
||||||
<i class="fa-regular fa-square tw:text-red-400 me-3"></i>{% translate 'Unselect All' %}
|
<i class="fa-regular fa-square text-error me-3"></i>{% translate 'Unselect All' %}
|
||||||
</div>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="vr tw:align-middle"></div>
|
<div class="divider divider-horizontal m-0"></div>
|
||||||
<button class="btn btn-secondary btn-sm"
|
<button class="btn btn-secondary btn-sm"
|
||||||
hx-get="{% url 'transactions_bulk_undelete' %}"
|
hx-get="{% url 'transactions_bulk_undelete' %}"
|
||||||
hx-include=".transaction"
|
hx-include=".transaction"
|
||||||
data-bs-toggle="tooltip"
|
data-tippy-content="{% translate 'Restore' %}">
|
||||||
data-bs-title="{% translate 'Restore' %}">
|
|
||||||
<i class="fa-solid fa-trash-arrow-up fa-fw"></i>
|
<i class="fa-solid fa-trash-arrow-up fa-fw"></i>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-secondary btn-sm"
|
<button class="btn btn-secondary btn-sm"
|
||||||
hx-get="{% url 'transactions_bulk_delete' %}"
|
hx-get="{% url 'transactions_bulk_delete' %}"
|
||||||
hx-include=".transaction"
|
hx-include=".transaction"
|
||||||
hx-trigger="confirmed"
|
hx-trigger="confirmed"
|
||||||
data-bs-toggle="tooltip"
|
data-tippy-content="{% translate 'Delete' %}"
|
||||||
data-bs-title="{% translate 'Delete' %}"
|
|
||||||
data-bypass-on-ctrl="true"
|
data-bypass-on-ctrl="true"
|
||||||
data-title="{% translate "Are you sure?" %}"
|
data-title="{% translate "Are you sure?" %}"
|
||||||
data-text="{% translate "You won't be able to revert this!" %}"
|
data-text="{% translate "You won't be able to revert this!" %}"
|
||||||
data-confirm-text="{% translate "Yes, delete them!" %}"
|
data-confirm-text="{% translate "Yes, delete them!" %}"
|
||||||
_="install prompt_swal">
|
_="install prompt_swal">
|
||||||
<i class="fa-solid fa-trash text-danger"></i>
|
<i class="fa-solid fa-trash text-error"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="vr tw:align-middle"></div>
|
<div class="divider divider-horizontal m-0"></div>
|
||||||
<div class="btn-group"
|
<div class="join"
|
||||||
_="on selected_transactions_updated from #actions-bar
|
_="on selected_transactions_updated from #actions-bar
|
||||||
set realTotal to math.bignumber(0)
|
set realTotal to math.bignumber(0)
|
||||||
set flatTotal to math.bignumber(0)
|
set flatTotal to math.bignumber(0)
|
||||||
@@ -99,143 +101,143 @@
|
|||||||
put mean.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 40}) into #calc-menu-mean's innerText
|
put mean.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 40}) into #calc-menu-mean's innerText
|
||||||
put flatAmountValues.length.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 40}) into #calc-menu-count's innerText
|
put flatAmountValues.length.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 40}) into #calc-menu-count's innerText
|
||||||
end">
|
end">
|
||||||
<button class="btn btn-secondary btn-sm" _="on click
|
<button class="btn btn-secondary btn-sm join-item"
|
||||||
|
_="on click
|
||||||
set original_value to #real-total-front's innerText
|
set original_value to #real-total-front's innerText
|
||||||
writeText(original_value) on navigator.clipboard
|
writeText(original_value) on navigator.clipboard
|
||||||
put '{% translate "copied!" %}' into #real-total-front's innerText
|
put '{% translate "copied!" %}' into #real-total-front's innerText
|
||||||
wait 1s
|
wait 1s
|
||||||
put original_value into #real-total-front's innerText
|
put original_value into #real-total-front's innerText
|
||||||
end">
|
end">
|
||||||
<i class="fa-solid fa-plus fa-fw me-md-2 text-primary"></i>
|
<i class="fa-solid fa-plus fa-fw me-md-2"></i>
|
||||||
<span class="d-none d-md-inline-block" id="real-total-front">0</span>
|
<span class="hidden md:inline-block" id="real-total-front">0</span>
|
||||||
</button>
|
|
||||||
<button type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split"
|
|
||||||
data-bs-toggle="dropdown" aria-expanded="false" data-bs-auto-close="outside">
|
|
||||||
<span class="visually-hidden">{% trans "Toggle Dropdown" %}</span>
|
|
||||||
</button>
|
</button>
|
||||||
|
<div>
|
||||||
|
<button class="join-item btn btn-sm btn-secondary"
|
||||||
|
type="button"
|
||||||
|
data-bs-toggle="dropdown"
|
||||||
|
data-bs-auto-close="outside"
|
||||||
|
aria-expanded="false">
|
||||||
|
<i class="fa-solid fa-chevron-down fa-xs"></i>
|
||||||
|
</button>
|
||||||
|
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu dropdown-menu-end menu">
|
||||||
<li>
|
<li class="cursor-pointer"
|
||||||
<div class="dropdown-item-text p-0">
|
_="on click
|
||||||
<div>
|
set original_value to #calc-menu-flat-total's innerText
|
||||||
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
writeText(original_value) on navigator.clipboard
|
||||||
{% trans "Flat Total" %}
|
put '{% translate "copied!" %}' into #calc-menu-flat-total
|
||||||
</div>
|
wait 1s
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
put original_value into #calc-menu-flat-total
|
||||||
id="calc-menu-flat-total"
|
end">
|
||||||
_="on click
|
<div class="py-1 px-3">
|
||||||
set original_value to my innerText
|
<div>
|
||||||
writeText(my innerText) on navigator.clipboard
|
<div class="text-base-content/60 text-xs font-medium">
|
||||||
put '{% translate "copied!" %}' into me
|
{% trans "Flat Total" %}
|
||||||
wait 1s
|
</div>
|
||||||
put original_value into me
|
<div id="calc-menu-flat-total">
|
||||||
end">
|
0
|
||||||
0
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</li>
|
||||||
</li>
|
<li class="cursor-pointer"
|
||||||
<li>
|
_="on click
|
||||||
<div class="dropdown-item-text p-0">
|
set original_value to #calc-menu-real-total's innerText
|
||||||
<div>
|
writeText(original_value) on navigator.clipboard
|
||||||
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
put '{% translate "copied!" %}' into #calc-menu-real-total
|
||||||
{% trans "Real Total" %}
|
wait 1s
|
||||||
</div>
|
put original_value into #calc-menu-real-total
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
end">
|
||||||
id="calc-menu-real-total"
|
<div class="py-1 px-3">
|
||||||
_="on click
|
<div>
|
||||||
set original_value to my innerText
|
<div class="text-base-content/60 text-xs font-medium">
|
||||||
writeText(my innerText) on navigator.clipboard
|
{% trans "Real Total" %}
|
||||||
put '{% translate "copied!" %}' into me
|
</div>
|
||||||
wait 1s
|
<div id="calc-menu-real-total">
|
||||||
put original_value into me
|
0
|
||||||
end">
|
</div>
|
||||||
0
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</li>
|
||||||
</li>
|
<li class="cursor-pointer"
|
||||||
<li>
|
_="on click
|
||||||
<div class="dropdown-item-text p-0">
|
set original_value to #calc-menu-mean's innerText
|
||||||
<div>
|
writeText(original_value) on navigator.clipboard
|
||||||
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
put '{% translate "copied!" %}' into #calc-menu-mean
|
||||||
{% trans "Mean" %}
|
wait 1s
|
||||||
</div>
|
put original_value into #calc-menu-mean
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
end">
|
||||||
id="calc-menu-mean"
|
<div class="p-1 px-3">
|
||||||
_="on click
|
<div>
|
||||||
set original_value to my innerText
|
<div class="text-base-content/60 text-xs font-medium">
|
||||||
writeText(my innerText) on navigator.clipboard
|
{% trans "Mean" %}
|
||||||
put '{% translate "copied!" %}' into me
|
</div>
|
||||||
wait 1s
|
<div id="calc-menu-mean">
|
||||||
put original_value into me
|
0
|
||||||
end">
|
</div>
|
||||||
0
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</li>
|
||||||
</li>
|
<li class="cursor-pointer"
|
||||||
<li>
|
_="on click
|
||||||
<div class="dropdown-item-text p-0">
|
set original_value to #calc-menu-max's innerText
|
||||||
<div>
|
writeText(original_value) on navigator.clipboard
|
||||||
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
put '{% translate "copied!" %}' into #calc-menu-max
|
||||||
{% trans "Max" %}
|
wait 1s
|
||||||
</div>
|
put original_value into #calc-menu-max
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
end">
|
||||||
id="calc-menu-max"
|
<div class="py-1 px-3">
|
||||||
_="on click
|
<div>
|
||||||
set original_value to my innerText
|
<div class="text-base-content/60 text-xs font-medium">
|
||||||
writeText(my innerText) on navigator.clipboard
|
{% trans "Max" %}
|
||||||
put '{% translate "copied!" %}' into me
|
</div>
|
||||||
wait 1s
|
<div id="calc-menu-max">
|
||||||
put original_value into me
|
0
|
||||||
end">
|
</div>
|
||||||
0
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</li>
|
||||||
</li>
|
<li class="cursor-pointer"
|
||||||
<li>
|
_="on click
|
||||||
<div class="dropdown-item-text p-0">
|
set original_value to #calc-menu-min's innerText
|
||||||
<div>
|
writeText(original_value) on navigator.clipboard
|
||||||
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
put '{% translate "copied!" %}' into #calc-menu-min
|
||||||
{% trans "Min" %}
|
wait 1s
|
||||||
</div>
|
put original_value into #calc-menu-min
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
end">
|
||||||
id="calc-menu-min"
|
<div class="py-1 px-3">
|
||||||
_="on click
|
<div>
|
||||||
set original_value to my innerText
|
<div class="text-base-content/60 text-xs font-medium">
|
||||||
writeText(my innerText) on navigator.clipboard
|
{% trans "Min" %}
|
||||||
put '{% translate "copied!" %}' into me
|
</div>
|
||||||
wait 1s
|
<div id="calc-menu-min">
|
||||||
put original_value into me
|
0
|
||||||
end">
|
</div>
|
||||||
0
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</li>
|
||||||
</li>
|
<li class="cursor-pointer"
|
||||||
<li>
|
_="on click
|
||||||
<div class="dropdown-item-text p-0">
|
set original_value to #calc-menu-count's innerText
|
||||||
<div>
|
writeText(original_value) on navigator.clipboard
|
||||||
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
put '{% translate "copied!" %}' into #calc-menu-count
|
||||||
{% trans "Count" %}
|
wait 1s
|
||||||
</div>
|
put original_value into #calc-menu-count
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
end">
|
||||||
id="calc-menu-count"
|
<div class="py-1 px-3">
|
||||||
_="on click
|
<div>
|
||||||
set original_value to my innerText
|
<div class="text-base-content/60 text-xs font-medium">
|
||||||
writeText(my innerText) on navigator.clipboard
|
{% trans "Count" %}
|
||||||
put '{% translate "copied!" %}' into me
|
</div>
|
||||||
wait 1s
|
<div id="calc-menu-count">
|
||||||
put original_value into me
|
0
|
||||||
end">
|
</div>
|
||||||
0
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</li>
|
||||||
</li>
|
</ul>
|
||||||
</ul>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endspaceless %}
|
{% endspaceless %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<div class="fab">
|
||||||
|
<button class="btn btn-lg btn-circle btn-primary"
|
||||||
|
hx-get="{{ url }}"
|
||||||
|
hx-target="{{ hx_target }}">
|
||||||
|
<i class="fa-solid fa-plus text-2xl fa-fw"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<span class="tw:text-xs text-white-50 mx-1"
|
<span class="text-xs text-base-content/50 mx-1" data-tippy-content="{{ content }}">
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-title="{{ content }}">
|
|
||||||
<i class="{% if not icon %}fa-solid fa-circle-question{% else %}{{ icon }}{% endif %} fa-fw"></i>
|
<i class="{% if not icon %}fa-solid fa-circle-question{% else %}{{ icon }}{% endif %} fa-fw"></i>
|
||||||
</span>
|
</span>
|
||||||
{% endspaceless %}
|
{% endspaceless %}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<div class="card tw:relative h-100 shadow">
|
<div class="card card-border relative h-full shadow bg-base-100">
|
||||||
<div class="tw:absolute tw:h-8 tw:w-8 tw:right-2 tw:top-2 tw:bg-{{ color }}-300 tw:text-{{ color }}-800 text-center align-items-center d-flex justify-content-center rounded-2">
|
<div class="absolute h-8 w-8 right-2 top-2 bg-{{ color }}-300 text-{{ color }}-800 text-center flex items-center justify-center rounded-lg">
|
||||||
{% if icon %}<i class="{{ icon }}"></i>{% else %}<span class="fw-bold">{{ title.0 }}</span>{% endif %}
|
{% if icon %}<i class="{{ icon }}"></i>{% else %}<span class="font-bold">{{ title.0 }}</span>{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="tw:text-{{ color }}-400 fw-bold tw:mr-[50px]" {{ attrs }}>{{ title }}{% if help_text %}<c-ui.help-icon :content="help_text" icon=""></c-ui.help-icon>{% endif %}</h5>
|
<h5 class="font-bold mr-[50px] text-xl {{ title_css_classes }}" {{ attrs }}>{{ title }}{% if help_text %}<c-ui.help-icon :content="help_text" icon=""></c-ui.help-icon>{% endif %}</h5>
|
||||||
{{ slot }}
|
{{ slot }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,31 +1,57 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="progress-stacked">
|
<div class="flex w-full h-4 rounded-full bg-white overflow-hidden"
|
||||||
<div class="progress position-relative" role="progressbar" aria-label="{% trans 'Projected Income' %} ({{ percentage.percentages.income_projected|floatformat:2 }}%)" aria-valuenow="{{ percentage.percentages.expense_projected|floatformat:0 }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ percentage.percentages.income_projected|floatformat:"2u" }}%">
|
role="group"
|
||||||
<div class="progress-bar progress-bar-striped tw:bg-green-300!"
|
aria-label="{% trans 'Income and Expense Percentages' %}">
|
||||||
data-bs-toggle="tooltip"
|
|
||||||
data-bs-placement="top"
|
<!-- Segment 1: Projected Income -->
|
||||||
title="{% trans 'Projected Income' %} ({{ percentage.percentages.income_projected|floatformat:2 }}%)">
|
<div class="flex items-center justify-center h-4 bg-success/60 tooltip tooltip-bottom tooltip-success
|
||||||
|
{% if percentage.percentages.income_projected > 0 %}rounded-s-full{% endif %}
|
||||||
|
{% if percentage.percentages.income_projected > 0 and percentage.percentages.income_current <= 0 and percentage.percentages.expense_projected <= 0 and percentage.percentages.expense_current <= 0 %}rounded-e-full{% endif %}"
|
||||||
|
style="width: {{ percentage.percentages.income_projected|floatformat:'2u' }}%"
|
||||||
|
data-tippy-content="{% trans 'Projected Income' %} ({{ percentage.percentages.income_projected|floatformat:2 }}%)"
|
||||||
|
role="progressbar"
|
||||||
|
aria-label="{% trans 'Projected Income' %} ({{ percentage.percentages.income_projected|floatformat:2 }}%)"
|
||||||
|
aria-valuenow="{{ percentage.percentages.income_projected|floatformat:0 }}"
|
||||||
|
aria-valuemin="0"
|
||||||
|
aria-valuemax="100">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="progress position-relative" role="progressbar" aria-label="{% trans 'Current Income' %} ({{ percentage.percentages.income_current|floatformat:2 }}%)" aria-valuenow="{{ percentage.percentages.expense_projected|floatformat:0 }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ percentage.percentages.income_current|floatformat:"2u" }}%">
|
<!-- Segment 2: Current Income -->
|
||||||
<div class="progress-bar tw:bg-green-400!"
|
<div class="flex items-center justify-center h-4 bg-success tooltip tooltip-bottom tooltip-success
|
||||||
data-bs-toggle="tooltip"
|
{% if percentage.percentages.income_projected <= 0 and percentage.percentages.income_current > 0 %}rounded-s-full{% endif %}
|
||||||
data-bs-placement="top"
|
{% if percentage.percentages.income_current > 0 and percentage.percentages.expense_projected <= 0 and percentage.percentages.expense_current <= 0 %}rounded-e-full{% endif %}"
|
||||||
title="{% trans 'Current Income' %} ({{ p.percentages.income_current|floatformat:2 }}%)">
|
style="width: {{ percentage.percentages.income_current|floatformat:'2u' }}%"
|
||||||
|
data-tippy-content="{% trans 'Current Income' %} ({{ percentage.percentages.income_current|floatformat:2 }}%)"
|
||||||
|
role="progressbar"
|
||||||
|
aria-label="{% trans 'Current Income' %} ({{ percentage.percentages.income_current|floatformat:2 }}%)"
|
||||||
|
aria-valuenow="{{ percentage.percentages.income_current|floatformat:0 }}"
|
||||||
|
aria-valuemin="0"
|
||||||
|
aria-valuemax="100">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="progress position-relative" role="progressbar" aria-label="{% trans 'Projected Expenses' %} ({{ percentage.percentages.expense_projected|floatformat:2 }}%)" aria-valuenow="{{ percentage.percentages.expense_projected|floatformat:0 }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ percentage.percentages.expense_projected|floatformat:"2u" }}%">
|
<!-- Segment 3: Projected Expenses -->
|
||||||
<div class="progress-bar progress-bar-striped tw:bg-red-300!"
|
<div class="flex items-center justify-center h-4 bg-error/60 tooltip tooltip-bottom tooltip-error
|
||||||
data-bs-toggle="tooltip"
|
{% if percentage.percentages.income_projected <= 0 and percentage.percentages.income_current <= 0 and percentage.percentages.expense_projected > 0 %}rounded-s-full{% endif %}
|
||||||
data-bs-placement="top"
|
{% if percentage.percentages.expense_projected > 0 and percentage.percentages.expense_current <= 0 %}rounded-e-full{% endif %}"
|
||||||
title="{% trans 'Projected Expenses' %} ({{ percentage.percentages.expense_projected|floatformat:2 }}%)">
|
style="width: {{ percentage.percentages.expense_projected|floatformat:'2u' }}%"
|
||||||
|
data-tippy-content="{% trans 'Projected Expenses' %} ({{ percentage.percentages.expense_projected|floatformat:2 }}%)"
|
||||||
|
role="progressbar"
|
||||||
|
aria-label="{% trans 'Projected Expenses' %} ({{ percentage.percentages.expense_projected|floatformat:2 }}%)"
|
||||||
|
aria-valuenow="{{ percentage.percentages.expense_projected|floatformat:0 }}"
|
||||||
|
aria-valuemin="0"
|
||||||
|
aria-valuemax="100">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="progress position-relative" role="progressbar" aria-label="{% trans 'Current Expenses' %} ({{ percentage.percentages.expense_current|floatformat:2 }}%)" aria-valuenow="{{ percentage.percentages.expense_projected|floatformat:0 }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ percentage.percentages.expense_current|floatformat:"2u" }}%">
|
<!-- Segment 4: Current Expenses -->
|
||||||
<div class="progress-bar tw:bg-red-400!"
|
<div class="flex items-center justify-center h-4 bg-error tooltip tooltip-bottom tooltip-error
|
||||||
data-bs-toggle="tooltip"
|
{% if percentage.percentages.income_projected <= 0 and percentage.percentages.income_current <= 0 and percentage.percentages.expense_projected <= 0 and percentage.percentages.expense_current > 0 %}rounded-s-full{% endif %}
|
||||||
data-bs-placement="top"
|
{% if percentage.percentages.expense_current > 0 %}rounded-e-full{% endif %}"
|
||||||
title="{% trans 'Current Expenses' %} ({{ percentage.percentages.expense_current|floatformat:2 }}%)">
|
style="width: {{ percentage.percentages.expense_current|floatformat:'2u' }}%"
|
||||||
|
data-tippy-content="{% trans 'Current Expenses' %} ({{ percentage.percentages.expense_current|floatformat:2 }}%)"
|
||||||
|
role="progressbar"
|
||||||
|
aria-label="{% trans 'Current Expenses' %} ({{ percentage.percentages.expense_current|floatformat:2 }}%)"
|
||||||
|
aria-valuenow="{{ percentage.percentages.expense_current|floatformat:0 }}"
|
||||||
|
aria-valuemin="0"
|
||||||
|
aria-valuemax="100">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="d-grid gap-2 d-xl-flex justify-content-xl-end">
|
<div class="grid gap-2 grid-cols-1 xl:flex xl:justify-end">
|
||||||
<div class="d-grid gap-2 d-xl-flex flex-wrap justify-content-xl-center">
|
<div class="grid gap-2 xl:flex flex-wrap xl:justify-center">
|
||||||
<button class="btn btn-sm btn-outline-success"
|
<button class="btn btn-sm btn-outline btn-success"
|
||||||
hx-get="{% url 'transaction_add' %}"
|
hx-get="{% url 'transaction_add' %}"
|
||||||
hx-target="#generic-offcanvas"
|
hx-target="#generic-offcanvas"
|
||||||
hx-trigger="click, add_income from:window"
|
hx-trigger="click, add_income from:window"
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
<i class="fa-solid fa-arrow-right-to-bracket me-2"></i>
|
<i class="fa-solid fa-arrow-right-to-bracket me-2"></i>
|
||||||
{% translate "Income" %}
|
{% translate "Income" %}
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-sm btn-outline-danger"
|
<button class="btn btn-sm btn-outline btn-error"
|
||||||
hx-get="{% url 'transaction_add' %}"
|
hx-get="{% url 'transaction_add' %}"
|
||||||
hx-target="#generic-offcanvas"
|
hx-target="#generic-offcanvas"
|
||||||
hx-trigger="click, add_expense from:window"
|
hx-trigger="click, add_expense from:window"
|
||||||
@@ -17,21 +17,21 @@
|
|||||||
<i class="fa-solid fa-arrow-right-from-bracket me-2"></i>
|
<i class="fa-solid fa-arrow-right-from-bracket me-2"></i>
|
||||||
{% translate "Expense" %}
|
{% translate "Expense" %}
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-sm btn-outline-warning"
|
<button class="btn btn-sm btn-outline btn-warning"
|
||||||
hx-get="{% url 'installment_plan_add' %}"
|
hx-get="{% url 'installment_plan_add' %}"
|
||||||
hx-trigger="click, installment from:window"
|
hx-trigger="click, installment from:window"
|
||||||
hx-target="#generic-offcanvas">
|
hx-target="#generic-offcanvas">
|
||||||
<i class="fa-solid fa-divide me-2"></i>
|
<i class="fa-solid fa-divide me-2"></i>
|
||||||
{% translate "Installment" %}
|
{% translate "Installment" %}
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-sm btn-outline-warning"
|
<button class="btn btn-sm btn-outline btn-warning"
|
||||||
hx-get="{% url 'recurring_transaction_add' %}"
|
hx-get="{% url 'recurring_transaction_add' %}"
|
||||||
hx-trigger="click, balance from:window"
|
hx-trigger="click, balance from:window"
|
||||||
hx-target="#generic-offcanvas">
|
hx-target="#generic-offcanvas">
|
||||||
<i class="fa-solid fa-repeat me-2"></i>
|
<i class="fa-solid fa-repeat me-2"></i>
|
||||||
{% translate "Recurring" %}
|
{% translate "Recurring" %}
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-sm btn-outline-info"
|
<button class="btn btn-sm btn-outline btn-info"
|
||||||
hx-get="{% url 'transactions_transfer' %}"
|
hx-get="{% url 'transactions_transfer' %}"
|
||||||
hx-target="#generic-offcanvas"
|
hx-target="#generic-offcanvas"
|
||||||
hx-trigger="click, add_transfer from:window"
|
hx-trigger="click, add_transfer from:window"
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
<i class="fa-solid fa-money-bill-transfer me-2"></i>
|
<i class="fa-solid fa-money-bill-transfer me-2"></i>
|
||||||
{% translate "Transfer" %}
|
{% translate "Transfer" %}
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-sm btn-outline-info"
|
<button class="btn btn-sm btn-outline btn-info"
|
||||||
hx-get="{% url 'account_reconciliation' %}"
|
hx-get="{% url 'account_reconciliation' %}"
|
||||||
hx-trigger="click, balance from:window"
|
hx-trigger="click, balance from:window"
|
||||||
hx-target="#generic-offcanvas">
|
hx-target="#generic-offcanvas">
|
||||||
|
|||||||
@@ -1,102 +1,101 @@
|
|||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
<div class="tw:sticky tw:bottom-4 tw:left-0 tw:right-0 tw:z-50 tw:hidden mx-auto tw:w-fit" id="actions-bar"
|
<div class="sticky bottom-4 left-0 right-0 z-1000 hidden mx-auto w-fit" id="actions-bar"
|
||||||
_="on change from #transactions-list or htmx:afterSettle from window
|
_="on change from #transactions-list or htmx:afterSettle from window
|
||||||
if #actions-bar then
|
if #actions-bar then
|
||||||
if no <input[type='checkbox']:checked/> in #transactions-list
|
if no <input[type='checkbox']:checked/> in #transactions-list
|
||||||
if #actions-bar
|
if #actions-bar
|
||||||
add .slide-in-bottom-reverse then settle
|
add .slide-in-bottom-reverse then settle
|
||||||
then add .tw:hidden to #actions-bar
|
then add .hidden to #actions-bar
|
||||||
then remove .slide-in-bottom-reverse
|
then remove .slide-in-bottom-reverse
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if #actions-bar
|
if #actions-bar
|
||||||
set #selected-count's innerHTML to length of <input[type='checkbox']:checked/> in #transactions-list
|
set #selected-count's innerHTML to length of <input[type='checkbox']:checked/> in #transactions-list
|
||||||
then remove .tw:hidden from #actions-bar
|
then remove .hidden from #actions-bar
|
||||||
then trigger selected_transactions_updated
|
then trigger selected_transactions_updated
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end">
|
end">
|
||||||
<div class="card slide-in-bottom tw:max-w-[90vw]">
|
<div class="card bg-base-300 shadow slide-in-bottom max-w-[90vw] card-border">
|
||||||
<div class="card-body p-2 d-flex justify-content-between align-items-center gap-3 tw:overflow-x-auto">
|
<div class="card-body flex-row p-2 flex justify-between items-center gap-3 overflow-x-auto">
|
||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div class="tw:font-bold tw:text-md ms-2" id="selected-count">0</div>
|
<div class="font-bold text-md ms-2" id="selected-count">0</div>
|
||||||
<div class="vr tw:align-middle"></div>
|
<div class="divider divider-horizontal m-0"></div>
|
||||||
<div class="dropdown">
|
<div>
|
||||||
<button class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-bs-toggle="dropdown"
|
<button role="button" class="btn btn-secondary btn-sm" type="button"
|
||||||
aria-expanded="false" data-bs-popper-config='{"strategy":"fixed"}'>
|
data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
<i class="fa-regular fa-square-check fa-fw"></i>
|
<i class="fa-regular fa-square-check fa-fw"></i>
|
||||||
|
<i class="fa-solid fa-chevron-down fa-xs"></i>
|
||||||
</button>
|
</button>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu menu">
|
||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
<a class="cursor-pointer"
|
||||||
_="on click set <#transactions-list .transaction:not([style*='display: none']) input[type='checkbox']/>'s checked to true then call me.blur() then trigger change">
|
_="on click set <#transactions-list .transaction:not([style*='display: none']) input[type='checkbox']/>'s checked to true then call me.blur() then trigger change">
|
||||||
<i class="fa-regular fa-square-check tw:text-green-400 me-3"></i>{% translate 'Select All' %}
|
<i class="fa-regular fa-square-check text-success me-3"></i>{% translate 'Select All' %}
|
||||||
</div>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
<a class="cursor-pointer"
|
||||||
_="on click set <#transactions-list input[type='checkbox']/>'s checked to false then call me.blur() then trigger change">
|
_="on click set <#transactions-list input[type='checkbox']/>'s checked to false then call me.blur() then trigger change">
|
||||||
<i class="fa-regular fa-square tw:text-red-400 me-3"></i>{% translate 'Unselect All' %}
|
<i class="fa-regular fa-square text-error me-3"></i>{% translate 'Unselect All' %}
|
||||||
</div>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="vr tw:align-middle"></div>
|
<div class="divider divider-horizontal m-0"></div>
|
||||||
<div class="btn-group">
|
<div class="join">
|
||||||
<button class="btn btn-secondary btn-sm"
|
<button class="btn btn-secondary join-item btn-sm"
|
||||||
hx-get="{% url 'transactions_bulk_edit' %}"
|
hx-get="{% url 'transactions_bulk_edit' %}"
|
||||||
hx-target="#generic-offcanvas"
|
hx-target="#generic-offcanvas"
|
||||||
hx-include=".transaction"
|
hx-include=".transaction"
|
||||||
data-bs-toggle="tooltip"
|
data-tippy-content="{% translate 'Edit' %}">
|
||||||
data-bs-title="{% translate 'Edit' %}">
|
|
||||||
<i class="fa-solid fa-pencil"></i>
|
<i class="fa-solid fa-pencil"></i>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split"
|
<div>
|
||||||
data-bs-toggle="dropdown" data-bs-popper-config='{"strategy":"fixed"}' aria-expanded="false"
|
<button type="button" role="button" class="join-item btn btn-sm btn-secondary"
|
||||||
data-bs-auto-close="outside">
|
data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
<span class="visually-hidden">{% trans "Toggle Dropdown" %}</span>
|
<i class="fa-solid fa-chevron-down fa-xs"></i>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu menu">
|
||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
<a class="cursor-pointer"
|
||||||
hx-get="{% url 'transactions_bulk_unpay' %}"
|
hx-get="{% url 'transactions_bulk_unpay' %}"
|
||||||
hx-include=".transaction">
|
hx-include=".transaction">
|
||||||
<i class="fa-regular fa-circle tw:text-red-400 fa-fw me-3"></i>{% translate 'Mark as unpaid' %}
|
<i class="fa-regular fa-circle text-red-400 fa-fw me-3"></i>{% translate 'Mark as unpaid' %}
|
||||||
</div>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
<a class="cursor-pointer"
|
||||||
hx-get="{% url 'transactions_bulk_pay' %}"
|
hx-get="{% url 'transactions_bulk_pay' %}"
|
||||||
hx-include=".transaction">
|
hx-include=".transaction">
|
||||||
<i class="fa-regular fa-circle-check tw:text-green-400 fa-fw me-3"></i>{% translate 'Mark as paid' %}
|
<i class="fa-regular fa-circle-check text-green-400 fa-fw me-3"></i>{% translate 'Mark as paid' %}
|
||||||
</div>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-secondary btn-sm"
|
<button class="btn btn-secondary btn-sm"
|
||||||
hx-get="{% url 'transactions_bulk_clone' %}"
|
hx-get="{% url 'transactions_bulk_clone' %}"
|
||||||
hx-include=".transaction"
|
hx-include=".transaction"
|
||||||
data-bs-toggle="tooltip"
|
data-tippy-content="{% translate 'Duplicate' %}">
|
||||||
data-bs-title="{% translate 'Duplicate' %}">
|
|
||||||
<i class="fa-solid fa-clone fa-fw"></i>
|
<i class="fa-solid fa-clone fa-fw"></i>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-secondary btn-sm"
|
<button class="btn btn-error btn-sm"
|
||||||
hx-get="{% url 'transactions_bulk_delete' %}"
|
hx-get="{% url 'transactions_bulk_delete' %}"
|
||||||
hx-include=".transaction"
|
hx-include=".transaction"
|
||||||
hx-trigger="confirmed"
|
hx-trigger="confirmed"
|
||||||
data-bs-toggle="tooltip"
|
data-tippy-content="{% translate 'Delete' %}"
|
||||||
data-bs-title="{% translate 'Delete' %}"
|
|
||||||
data-bypass-on-ctrl="true"
|
data-bypass-on-ctrl="true"
|
||||||
data-title="{% translate "Are you sure?" %}"
|
data-title="{% translate "Are you sure?" %}"
|
||||||
data-text="{% translate "You won't be able to revert this!" %}"
|
data-text="{% translate "You won't be able to revert this!" %}"
|
||||||
data-confirm-text="{% translate "Yes, delete them!" %}"
|
data-confirm-text="{% translate "Yes, delete them!" %}"
|
||||||
_="install prompt_swal">
|
_="install prompt_swal">
|
||||||
<i class="fa-solid fa-trash text-danger"></i>
|
<i class="fa-solid fa-trash"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="vr tw:align-middle"></div>
|
<div class="divider divider-horizontal m-0"></div>
|
||||||
<div class="btn-group"
|
<div class="join"
|
||||||
_="on selected_transactions_updated from #actions-bar
|
_="on selected_transactions_updated from #actions-bar
|
||||||
set realTotal to math.bignumber(0)
|
set realTotal to math.bignumber(0)
|
||||||
set flatTotal to math.bignumber(0)
|
set flatTotal to math.bignumber(0)
|
||||||
@@ -134,144 +133,143 @@
|
|||||||
put mean.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 40}) into #calc-menu-mean's innerText
|
put mean.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 40}) into #calc-menu-mean's innerText
|
||||||
put flatAmountValues.length.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 40}) into #calc-menu-count's innerText
|
put flatAmountValues.length.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 40}) into #calc-menu-count's innerText
|
||||||
end">
|
end">
|
||||||
<button class="btn btn-secondary btn-sm" _="on click
|
<button class="btn btn-secondary btn-sm join-item"
|
||||||
|
_="on click
|
||||||
set original_value to #real-total-front's innerText
|
set original_value to #real-total-front's innerText
|
||||||
writeText(original_value) on navigator.clipboard
|
writeText(original_value) on navigator.clipboard
|
||||||
put '{% translate "copied!" %}' into #real-total-front's innerText
|
put '{% translate "copied!" %}' into #real-total-front's innerText
|
||||||
wait 1s
|
wait 1s
|
||||||
put original_value into #real-total-front's innerText
|
put original_value into #real-total-front's innerText
|
||||||
end">
|
end">
|
||||||
<i class="fa-solid fa-plus fa-fw me-md-2 text-primary"></i>
|
<i class="fa-solid fa-plus fa-fw me-md-2"></i>
|
||||||
<span class="d-none d-md-inline-block" id="real-total-front">0</span>
|
<span class="hidden md:inline-block" id="real-total-front">0</span>
|
||||||
</button>
|
|
||||||
<button type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split"
|
|
||||||
data-bs-toggle="dropdown" aria-expanded="false" data-bs-auto-close="outside"
|
|
||||||
data-bs-popper-config='{"strategy":"fixed"}'>
|
|
||||||
<span class="visually-hidden">{% trans "Toggle Dropdown" %}</span>
|
|
||||||
</button>
|
</button>
|
||||||
|
<div>
|
||||||
|
<button class="join-item btn btn-sm btn-secondary"
|
||||||
|
type="button"
|
||||||
|
data-bs-toggle="dropdown"
|
||||||
|
data-bs-auto-close="outside"
|
||||||
|
aria-expanded="false">
|
||||||
|
<i class="fa-solid fa-chevron-down fa-xs"></i>
|
||||||
|
</button>
|
||||||
|
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu dropdown-menu-end menu">
|
||||||
<li>
|
<li class="cursor-pointer"
|
||||||
<div class="dropdown-item-text p-0">
|
_="on click
|
||||||
<div>
|
set original_value to #calc-menu-flat-total's innerText
|
||||||
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
writeText(original_value) on navigator.clipboard
|
||||||
{% trans "Flat Total" %}
|
put '{% translate "copied!" %}' into #calc-menu-flat-total
|
||||||
</div>
|
wait 1s
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
put original_value into #calc-menu-flat-total
|
||||||
id="calc-menu-flat-total"
|
end">
|
||||||
_="on click
|
<div class="py-1 px-3">
|
||||||
set original_value to my innerText
|
<div>
|
||||||
writeText(my innerText) on navigator.clipboard
|
<div class="text-base-content/60 text-xs font-medium">
|
||||||
put '{% translate "copied!" %}' into me
|
{% trans "Flat Total" %}
|
||||||
wait 1s
|
</div>
|
||||||
put original_value into me
|
<div id="calc-menu-flat-total">
|
||||||
end">
|
0
|
||||||
0
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</li>
|
||||||
</li>
|
<li class="cursor-pointer"
|
||||||
<li>
|
_="on click
|
||||||
<div class="dropdown-item-text p-0">
|
set original_value to #calc-menu-real-total's innerText
|
||||||
<div>
|
writeText(original_value) on navigator.clipboard
|
||||||
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
put '{% translate "copied!" %}' into #calc-menu-real-total
|
||||||
{% trans "Real Total" %}
|
wait 1s
|
||||||
</div>
|
put original_value into #calc-menu-real-total
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
end">
|
||||||
id="calc-menu-real-total"
|
<div class="py-1 px-3">
|
||||||
_="on click
|
<div>
|
||||||
set original_value to my innerText
|
<div class="text-base-content/60 text-xs font-medium">
|
||||||
writeText(my innerText) on navigator.clipboard
|
{% trans "Real Total" %}
|
||||||
put '{% translate "copied!" %}' into me
|
</div>
|
||||||
wait 1s
|
<div id="calc-menu-real-total">
|
||||||
put original_value into me
|
0
|
||||||
end">
|
</div>
|
||||||
0
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</li>
|
||||||
</li>
|
<li class="cursor-pointer"
|
||||||
<li>
|
_="on click
|
||||||
<div class="dropdown-item-text p-0">
|
set original_value to #calc-menu-mean's innerText
|
||||||
<div>
|
writeText(original_value) on navigator.clipboard
|
||||||
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
put '{% translate "copied!" %}' into #calc-menu-mean
|
||||||
{% trans "Mean" %}
|
wait 1s
|
||||||
</div>
|
put original_value into #calc-menu-mean
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
end">
|
||||||
id="calc-menu-mean"
|
<div class="p-1 px-3">
|
||||||
_="on click
|
<div>
|
||||||
set original_value to my innerText
|
<div class="text-base-content/60 text-xs font-medium">
|
||||||
writeText(my innerText) on navigator.clipboard
|
{% trans "Mean" %}
|
||||||
put '{% translate "copied!" %}' into me
|
</div>
|
||||||
wait 1s
|
<div id="calc-menu-mean">
|
||||||
put original_value into me
|
0
|
||||||
end">
|
</div>
|
||||||
0
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</li>
|
||||||
</li>
|
<li class="cursor-pointer"
|
||||||
<li>
|
_="on click
|
||||||
<div class="dropdown-item-text p-0">
|
set original_value to #calc-menu-max's innerText
|
||||||
<div>
|
writeText(original_value) on navigator.clipboard
|
||||||
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
put '{% translate "copied!" %}' into #calc-menu-max
|
||||||
{% trans "Max" %}
|
wait 1s
|
||||||
</div>
|
put original_value into #calc-menu-max
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
end">
|
||||||
id="calc-menu-max"
|
<div class="py-1 px-3">
|
||||||
_="on click
|
<div>
|
||||||
set original_value to my innerText
|
<div class="text-base-content/60 text-xs font-medium">
|
||||||
writeText(my innerText) on navigator.clipboard
|
{% trans "Max" %}
|
||||||
put '{% translate "copied!" %}' into me
|
</div>
|
||||||
wait 1s
|
<div id="calc-menu-max">
|
||||||
put original_value into me
|
0
|
||||||
end">
|
</div>
|
||||||
0
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</li>
|
||||||
</li>
|
<li class="cursor-pointer"
|
||||||
<li>
|
_="on click
|
||||||
<div class="dropdown-item-text p-0">
|
set original_value to #calc-menu-min's innerText
|
||||||
<div>
|
writeText(original_value) on navigator.clipboard
|
||||||
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
put '{% translate "copied!" %}' into #calc-menu-min
|
||||||
{% trans "Min" %}
|
wait 1s
|
||||||
</div>
|
put original_value into #calc-menu-min
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
end">
|
||||||
id="calc-menu-min"
|
<div class="py-1 px-3">
|
||||||
_="on click
|
<div>
|
||||||
set original_value to my innerText
|
<div class="text-base-content/60 text-xs font-medium">
|
||||||
writeText(my innerText) on navigator.clipboard
|
{% trans "Min" %}
|
||||||
put '{% translate "copied!" %}' into me
|
</div>
|
||||||
wait 1s
|
<div id="calc-menu-min">
|
||||||
put original_value into me
|
0
|
||||||
end">
|
</div>
|
||||||
0
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</li>
|
||||||
</li>
|
<li class="cursor-pointer"
|
||||||
<li>
|
_="on click
|
||||||
<div class="dropdown-item-text p-0">
|
set original_value to #calc-menu-count's innerText
|
||||||
<div>
|
writeText(original_value) on navigator.clipboard
|
||||||
<div class="text-body-secondary tw:text-xs tw:font-medium px-3">
|
put '{% translate "copied!" %}' into #calc-menu-count
|
||||||
{% trans "Count" %}
|
wait 1s
|
||||||
</div>
|
put original_value into #calc-menu-count
|
||||||
<div class="dropdown-item px-3 tw:cursor-pointer"
|
end">
|
||||||
id="calc-menu-count"
|
<div class="py-1 px-3">
|
||||||
_="on click
|
<div>
|
||||||
set original_value to my innerText
|
<div class="text-base-content/60 text-xs font-medium">
|
||||||
writeText(my innerText) on navigator.clipboard
|
{% trans "Count" %}
|
||||||
put '{% translate "copied!" %}' into me
|
</div>
|
||||||
wait 1s
|
<div id="calc-menu-count">
|
||||||
put original_value into me
|
0
|
||||||
end">
|
</div>
|
||||||
0
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</li>
|
||||||
</li>
|
</ul>
|
||||||
</ul>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endspaceless %}
|
{% endspaceless %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
title="{% translate "Income" %}"></c-components.fab_menu_button>
|
title="{% translate "Income" %}"></c-components.fab_menu_button>
|
||||||
|
|
||||||
<c-components.fab_menu_button
|
<c-components.fab_menu_button
|
||||||
color="danger"
|
color="error"
|
||||||
hx_target="#generic-offcanvas"
|
hx_target="#generic-offcanvas"
|
||||||
hx_trigger="click, add_income from:window"
|
hx_trigger="click, add_income from:window"
|
||||||
hx_vals='{"year": {{ year }}, {% if month %}"month": {{ month }},{% endif %} "type": "EX"}'
|
hx_vals='{"year": {{ year }}, {% if month %}"month": {{ month }},{% endif %} "type": "EX"}'
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<c-ui.components.collapse
|
||||||
|
title_class="join-item"
|
||||||
|
:active="div.active">
|
||||||
|
<c-slot name="title">
|
||||||
|
{{ div.name }}
|
||||||
|
</c-slot>
|
||||||
|
<c-slot name="content">
|
||||||
|
{{ fields|safe }}
|
||||||
|
</c-slot>
|
||||||
|
</c-ui.components.collapse>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<div class="join join-vertical w-full{% if accordion.css_class %} {{accordion.css_class}}{% endif %}" id="{{ accordion.css_id }}">
|
||||||
|
{{ content|safe }}
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{% for fieldset in form.fieldsets %}
|
||||||
|
<fieldset class="fieldset fieldset-{{ forloop.counter }} {{ fieldset.classes }}">
|
||||||
|
{% if fieldset.legend %}
|
||||||
|
<legend class="fieldset-legend">{{ fieldset.legend }}</legend>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if fieldset.description %}
|
||||||
|
<p class="text-sm text-base-content/60">{{ fieldset.description }}</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% for field in fieldset %}
|
||||||
|
{% if field.is_hidden %}
|
||||||
|
{{ field }}
|
||||||
|
{% else %}
|
||||||
|
{% include "crispy-daisyui/field.html" %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% if not forloop.last or not fieldset_open %}
|
||||||
|
</fieldset>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{% if form.form_html %}
|
||||||
|
{% if include_media %}{{ form.media }}{% endif %}
|
||||||
|
{% if form_show_errors %}
|
||||||
|
{% include "crispy-daisyui/errors.html" %}
|
||||||
|
{% endif %}
|
||||||
|
{{ form.form_html }}
|
||||||
|
{% else %}
|
||||||
|
{% include "crispy-daisyui/uni_form.html" %}
|
||||||
|
{% endif %}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{% if form.non_field_errors %}
|
||||||
|
<div class="alert alert-error">
|
||||||
|
{% if form_error_title %}<h4 class="font-bold">{{ form_error_title }}</h4>{% endif %}
|
||||||
|
<ul class="m-0 list-inside">
|
||||||
|
{{ form.non_field_errors|unordered_list }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{% if formset.non_form_errors %}
|
||||||
|
<div class="alert alert-error">
|
||||||
|
{% if formset_error_title %}<h4 class="font-bold">{{ formset_error_title }}</h4>{% endif %}
|
||||||
|
<ul class="m-0 list-inside">
|
||||||
|
{{ formset.non_form_errors|unordered_list }}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
{% load crispy_forms_field %}
|
||||||
|
{% load crispy_extra %}
|
||||||
|
|
||||||
|
{% if field.is_hidden %}
|
||||||
|
{{ field }}
|
||||||
|
{% else %}
|
||||||
|
{% if field|is_checkbox and tag != "td" %}
|
||||||
|
<div class="">
|
||||||
|
{% if label_class %}
|
||||||
|
<div class="{{ field_class }}">
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
<{% if tag %}{{ tag }}{% else %}fieldset{% endif %} id="div_{{ field.auto_id }}" class="{% if field|is_checkbox and form_show_labels %}form-control{% else %}fieldset{% endif %}{% if wrapper_class %} {{ wrapper_class }}{% endif %}{% if field.css_classes %} {{ field.css_classes }}{% endif %}">
|
||||||
|
{% if field.label and not field|is_checkbox and form_show_labels %}
|
||||||
|
{% if field.use_fieldset %}<fieldset class="fieldset"{% if field.aria_describedby %} aria-describedby="{{ field.aria_describedby }}"{% endif %}>{% endif %}
|
||||||
|
<{% if field.use_fieldset %}legend{% else %}label{% endif %}
|
||||||
|
{% if field.id_for_label %}for="{{ field.id_for_label }}"{% endif %} class="fieldset-legend{% if label_class %} {{ label_class }}{% endif %}{% if field.field.required %} requiredField{% endif %}">
|
||||||
|
{{ field.label }}{% if field.field.required %}<span class="asteriskField">*</span>{% endif %}
|
||||||
|
</{% if field.use_fieldset %}legend{% else %}label{% endif %}>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if field|is_checkboxselectmultiple or field|is_radioselect %}
|
||||||
|
{% include 'crispy-daisyui/layout/radio_checkbox_select.html' %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if not field|is_checkboxselectmultiple and not field|is_radioselect %}
|
||||||
|
{% if field|is_checkbox and form_show_labels %}
|
||||||
|
{% if field.errors %}
|
||||||
|
{% crispy_field field 'class' 'checkbox checkbox-error' %}
|
||||||
|
{% else %}
|
||||||
|
{% crispy_field field 'class' 'checkbox' %}
|
||||||
|
{% endif %}
|
||||||
|
<label for="{{ field.id_for_label }}" class="label{% if field.field.required %} requiredField{% endif %}">
|
||||||
|
{{ field.label }}{% if field.field.required %}<span class="asteriskField">*</span>{% endif %}
|
||||||
|
</label>
|
||||||
|
{% include 'crispy-daisyui/layout/help_text_and_errors.html' %}
|
||||||
|
{% else %}
|
||||||
|
{% if field_class %}<div class="{{ field_class }}">{% endif %}
|
||||||
|
{% if field|is_file %}
|
||||||
|
{% include 'crispy-daisyui/layout/field_file.html' %}
|
||||||
|
{% elif field|is_select %}
|
||||||
|
{% if field.errors %}
|
||||||
|
{% crispy_field field 'class' 'select-error w-full' %}
|
||||||
|
{% else %}
|
||||||
|
{% crispy_field field 'class' '' %}
|
||||||
|
{% endif %}
|
||||||
|
{% elif field|is_checkbox %}
|
||||||
|
{% if field.errors %}
|
||||||
|
{% crispy_field field 'class' 'checkbox checkbox-error w-full' %}
|
||||||
|
{% else %}
|
||||||
|
{% crispy_field field 'class' 'checkbox w-full' %}
|
||||||
|
{% endif %}
|
||||||
|
{% elif field|is_input %}
|
||||||
|
{% if field.errors %}
|
||||||
|
{% crispy_field field 'class' 'input input-error w-full' %}
|
||||||
|
{% else %}
|
||||||
|
{% crispy_field field 'class' 'input w-full' %}
|
||||||
|
{% endif %}
|
||||||
|
{% elif field|is_textarea %}
|
||||||
|
{% if field.errors %}
|
||||||
|
{% crispy_field field 'class' 'textarea textarea-error w-full' %}
|
||||||
|
{% else %}
|
||||||
|
{% crispy_field field 'class' 'textarea w-full' %}
|
||||||
|
{% endif %}
|
||||||
|
{% elif field.errors %}
|
||||||
|
{% crispy_field field 'class' 'input input-error w-full' %}
|
||||||
|
{% else %}
|
||||||
|
{% crispy_field field 'class' 'input w-full' %}
|
||||||
|
{% endif %}
|
||||||
|
{% if not field|is_file %}
|
||||||
|
{% include 'crispy-daisyui/layout/help_text_and_errors.html' %}
|
||||||
|
{% endif %}
|
||||||
|
{% if field_class %}</div>{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% if field.use_fieldset and field.label and form_show_labels %}</fieldset>{% endif %}
|
||||||
|
</{% if tag %}{{ tag }}{% else %}fieldset{% endif %}>
|
||||||
|
{% if field|is_checkbox and tag != "td" %}
|
||||||
|
{% if label_class %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{% if inputs %}
|
||||||
|
<div class="">
|
||||||
|
{% if label_class %}
|
||||||
|
<div class="aab {{ label_class }}"></div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="{{ field_class }}">
|
||||||
|
{% for input in inputs %}
|
||||||
|
{% include "crispy-daisyui/layout/baseinput.html" %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<div class="alert {{ alert.css_class }}" role="alert"{% if alert.css_id %} id="{{ alert.css_id }}"{% endif %}>
|
||||||
|
{{ content|safe }}
|
||||||
|
{% if dismiss %}<button type="button" class="btn btn-sm btn-circle btn-ghost" data-bs-dismiss="alert" aria-label="Close">✕</button>{% endif %}
|
||||||
|
</div>
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{% for name, value in widget.attrs.items %}{% if value is not False %} {{ name }}{% if value is not True %}="{{ value|stringformat:'s' }}"{% endif %}{% endif %}{% endfor %}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<input type="{{ input.input_type }}"
|
||||||
|
name="{% if input.name|wordcount > 1 %}{{ input.name|slugify }}{% else %}{{ input.name }}{% endif %}"
|
||||||
|
value="{{ input.value }}"
|
||||||
|
{% if input.input_type != "hidden" %}
|
||||||
|
class="btn {{ input.field_classes }}"
|
||||||
|
id="{% if input.id %}{{ input.id }}{% else %}{{ input.input_type }}-id-{{ input.name|slugify }}{% endif %}"
|
||||||
|
{% endif %}
|
||||||
|
{{ input.flat_attrs }}
|
||||||
|
/>
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
<button class="btn" {{ button.flat_attrs }}>{{ button.content|safe }}</button>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<div {% if buttonholder.css_id %}id="{{ buttonholder.css_id }}"{% endif %}
|
||||||
|
class="flex flex-col gap-2{% if buttonholder.css_class %} {{ buttonholder.css_class }}{% endif %}">
|
||||||
|
{{ fields_output|safe }}
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{% if field.is_hidden %}
|
||||||
|
{{ field }}
|
||||||
|
{% else %}
|
||||||
|
<div id="div_{{ field.auto_id }}" class="{% if wrapper_class %} {{ wrapper_class }}{% endif %}{% if field.css_classes %} {{ field.css_classes }}{% endif %}">
|
||||||
|
|
||||||
|
{% if field.label %}
|
||||||
|
<fieldset class="fieldset"{% if field.aria_describedby %} aria-describedby="{{ field.aria_describedby }}"{% endif %}>
|
||||||
|
<legend for="{{ field.id_for_label }}" class="fieldset-legend {{ label_class }}{% if field.field.required %} requiredField{% endif %}">
|
||||||
|
{{ field.label }}{% if field.field.required %}<span class="asteriskField">*</span>{% endif %}
|
||||||
|
</legend>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% include 'crispy-daisyui/layout/radio_checkbox_select.html' %}
|
||||||
|
{% if field.label %}</fieldset>{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<div {% if div.css_id %}id="{{ div.css_id }}"{% endif %}
|
||||||
|
class="{% if 'col' in div.css_class %}{{ div.css_class|default:'' }}{% else %}md:col-span-6 col-span-12{{ div.css_class|default:'' }}{% endif %}" {{ div.flat_attrs }}>
|
||||||
|
{{ fields|safe }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<div {% if div.css_id %}id="{{ div.css_id }}"{% endif %}
|
||||||
|
{% if div.css_class %}class="{{ div.css_class }}"{% endif %} {{ div.flat_attrs }}>
|
||||||
|
{{ fields|safe }}
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{% if form_show_errors and field.errors %}
|
||||||
|
{% if field.errors.field_id %}
|
||||||
|
{# Django 5.2+ #}
|
||||||
|
<div id="{{field.errors.field_id}}_error" class="text-error text-sm mt-1">
|
||||||
|
{% else %}
|
||||||
|
<div id="{{field.auto_id}}_error" class="text-error text-sm mt-1">
|
||||||
|
{% endif %}
|
||||||
|
{% for error in field.errors %}
|
||||||
|
<span id="error_{{ forloop.counter }}_{{ field.auto_id }}"><strong>{{ error }}</strong></span>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{% if form_show_errors and field.errors %}
|
||||||
|
{% if field.errors.field_id %}
|
||||||
|
{# Django 5.2+ #}
|
||||||
|
<div id="{{field.errors.field_id}}_error" class="text-error text-sm mt-1">
|
||||||
|
{% else %}
|
||||||
|
<div id="{{field.auto_id}}_error" class="text-error text-sm mt-1">
|
||||||
|
{% endif %}
|
||||||
|
{% for error in field.errors %}
|
||||||
|
<p id="error_{{ forloop.counter }}_{{ field.auto_id }}"><strong>{{ error }}</strong></p>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
{% load crispy_forms_field %}
|
||||||
|
|
||||||
|
{% for widget in field.subwidgets %}
|
||||||
|
{% if widget.data.is_initial %}
|
||||||
|
<div class="join mb-2">
|
||||||
|
<span class="btn btn-disabled join-item">{{ widget.data.initial_text }}</span>
|
||||||
|
<div class="input join-item flex items-center flex-grow">
|
||||||
|
<span class="break-all flex-grow">
|
||||||
|
<a href="{{ field.value.url }}" class="link">{{ field.value.name }}</a>
|
||||||
|
</span>
|
||||||
|
{% if not widget.data.required %}
|
||||||
|
<span class="ml-2">
|
||||||
|
<label class="label cursor-pointer gap-2">
|
||||||
|
<span class="label-text">{{ widget.data.clear_checkbox_label }}</span>
|
||||||
|
<input type="checkbox" name="{{ widget.data.checkbox_name }}" id="{{ widget.data.checkbox_id }}" class="checkbox"{% if field.field.disabled %} disabled{% endif %}>
|
||||||
|
</label>
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<div class="fieldset">
|
||||||
|
<input type="{{ widget.data.type }}" name="{{ widget.data.name }}" class="file-input w-full {% if widget.data.attrs.class %} {{ widget.data.attrs.class }}{% endif %}{% if field.errors %} file-input-error{% endif %}"{% if field.field.disabled %} disabled{% endif %}{% for name, value in widget.data.attrs.items %}{% if value is not False and name != 'class' %} {{ name }}{% if value is not True %}="{{ value|stringformat:'s' }}"{% endif %}{% endif %}{% endfor %}>
|
||||||
|
{% include 'crispy-daisyui/layout/help_text_and_errors.html' %}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
{% load crispy_forms_field %}
|
||||||
|
|
||||||
|
<div{% if div.css_id %} id="{{ div.css_id }}"{% endif %} class="{% if wrapper_class %} {{ wrapper_class }}{% endif %}{% if field.css_classes %} {{ field.css_classes }}{% endif %}{% if div.css_class %} {{ div.css_class }}{% endif %}" {{ div.flat_attrs }}>
|
||||||
|
{% if field.label and form_show_labels %}
|
||||||
|
<label for="{{ field.id_for_label }}" class="label {{ label_class }}{% if field.field.required %} requiredField{% endif %}">
|
||||||
|
<span class="label-text">{{ field.label }}{% if field.field.required %}<span class="asteriskField">*</span>{% endif %}</span>
|
||||||
|
</label>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div{% if field_class %} class="{{ field_class }}"{% endif %}>
|
||||||
|
<div class="join {% if input_size %} {{ input_size }}{% endif %}">
|
||||||
|
{% if field|is_select %}
|
||||||
|
{% if field.errors %}
|
||||||
|
{% crispy_field field 'class' 'select-error join-item flex-grow' %}
|
||||||
|
{% else %}
|
||||||
|
{% crispy_field field 'class' 'join-item flex-grow' %}
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
{% if field.errors %}
|
||||||
|
{% crispy_field field 'class' 'input input-bordered input-error join-item flex-grow' %}
|
||||||
|
{% else %}
|
||||||
|
{% crispy_field field 'class' 'input input-bordered join-item flex-grow' %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{{ buttons|safe }}
|
||||||
|
</div>
|
||||||
|
{% if field.errors.field_id %}
|
||||||
|
{# Django 5.2+ #}
|
||||||
|
<div id="{{field.errors.field_id}}_error" class="text-error text-sm mt-1">
|
||||||
|
{% else %}
|
||||||
|
<div id="{{field.auto_id}}_error" class="text-error text-sm mt-1">
|
||||||
|
{% endif %}
|
||||||
|
{% for error in field.errors %}
|
||||||
|
<p id="error_{{ forloop.counter }}_{{ field.auto_id }}"><small><strong>{{ error }}</strong></small></p>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% include 'crispy-daisyui/layout/help_text.html' %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<fieldset {% if fieldset.css_id %}id="{{ fieldset.css_id }}"{% endif %}
|
||||||
|
{% if fieldset.css_class or form_style %}class="{{ fieldset.css_class }} {{ form_style }}"{% endif %}
|
||||||
|
{{ fieldset.flat_attrs|safe }}>
|
||||||
|
{% if legend %}<legend class="block text-gray-700 font-bold mb-2">{{ legend|safe }}</legend>{% endif %}
|
||||||
|
{{ fields|safe }}
|
||||||
|
</fieldset>
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{% load crispy_forms_field %}
|
||||||
|
|
||||||
|
{% if field.is_hidden %}
|
||||||
|
{{ field }}
|
||||||
|
{% else %}
|
||||||
|
<{% if tag %}{{ tag }}{% else %}div{% endif %} id="div_{{ field.auto_id }}" class="fieldset{% if wrapper_class %} {{ wrapper_class }}{% endif %}{% if field.css_classes %} {{ field.css_classes }}{% endif %}">
|
||||||
|
|
||||||
|
<label class="input input-bordered flex items-center gap-2{% if field.errors %} input-error{% endif %}" {% if field.id_for_label %}for="{{ field.id_for_label }}"{% endif %}>
|
||||||
|
<span class="label-text">{{ field.label }}{% if field.field.required %}<span class="asteriskField">*</span>{% endif %}</span>
|
||||||
|
{% if field|is_select %}
|
||||||
|
{% crispy_field field 'class' 'grow' %}
|
||||||
|
{% else %}
|
||||||
|
{% crispy_field field 'class' 'grow' %}
|
||||||
|
{% endif %}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
{% include 'crispy-daisyui/layout/help_text_and_errors.html' %}
|
||||||
|
|
||||||
|
</{% if tag %}{{ tag }}{% else %}div{% endif %}>
|
||||||
|
{% endif %}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user