Compare commits

..

No commits in common. "8eb9d4f9ee90057b8602d8630254febc3a8c85a6" and "8a62f6c46b4d0e8be75178ec0858d36365b46d7c" have entirely different histories.

15 changed files with 124 additions and 124 deletions

View File

@ -24,8 +24,8 @@ urlpatterns = [
# Document remove route can be found in konova/urls.py
path('<id>/document/new/', new_document_view, name='acc-new-doc'),
# Eco-account deductions
path('<id>/remove/<deduction_id>', deduction_remove_view, name='deduction-remove'),
path('<id>/deduct/new', new_deduction_view, name='acc-new-deduction'),
# Eco-account withdraws
path('<id>/remove/<withdraw_id>', withdraw_remove_view, name='withdraw-remove'),
path('<id>/withdraw/new', new_withdraw_view, name='acc-new-withdraw'),
]

View File

@ -1,7 +1,7 @@
from django.contrib import admin
from compensation.models import Compensation, CompensationAction, CompensationState, Payment, \
EcoAccountDeduction, EcoAccount
EcoAccountWithdraw, EcoAccount
class CompensationStateAdmin(admin.ModelAdmin):
@ -47,7 +47,7 @@ class PaymentAdmin(admin.ModelAdmin):
]
class EcoAccountDeductionAdmin(admin.ModelAdmin):
class EcoAccountWithdrawAdmin(admin.ModelAdmin):
list_display = [
"id",
"account",
@ -61,4 +61,4 @@ admin.site.register(Payment, PaymentAdmin)
admin.site.register(CompensationAction, CompensationActionAdmin)
admin.site.register(CompensationState, CompensationStateAdmin)
admin.site.register(EcoAccount, EcoAccountAdmin)
admin.site.register(EcoAccountDeduction, EcoAccountDeductionAdmin)
admin.site.register(EcoAccountWithdraw, EcoAccountWithdrawAdmin)

View File

@ -201,7 +201,7 @@ class Compensation(AbstractCompensation):
class EcoAccount(AbstractCompensation):
"""
An eco account is a kind of 'prepaid' compensation. It can be compared to an account that already has been filled
with some kind of currency. From this account one is able to deduct currency for current projects.
with some kind of currency. From this account one is able to 'withdraw' currency for current projects.
"""
# Users having access on this object
# Not needed in regular Compensation since their access is defined by the linked intervention's access
@ -232,13 +232,13 @@ class EcoAccount(AbstractCompensation):
self.identifier = new_id
super().save(*args, **kwargs)
def get_deductions_surface(self) -> float:
""" Calculates the account's deductions sum surface
def get_surface_withdraws(self) -> float:
""" Calculates the compensation's/account's surface
Returns:
sum_surface (float)
"""
return self.deductions.all().aggregate(Sum("surface"))["surface__sum"] or 0
return self.withdraws.all().aggregate(Sum("surface"))["surface__sum"] or 0
def get_available_rest(self, as_percentage: bool = False):
""" Calculates available rest surface of the eco account
@ -250,12 +250,12 @@ class EcoAccount(AbstractCompensation):
"""
ret_val = 0
deductions = self.deductions.filter(
withdraws = self.withdraws.filter(
intervention__deleted=None,
)
deductions_surfaces = deductions.aggregate(Sum("surface"))["surface__sum"] or 0
after_states_surfaces = self.after_states.all().aggregate(Sum("surface"))["surface__sum"] or deductions_surfaces ## no division by zero
ret_val = after_states_surfaces - deductions_surfaces
withdraw_surfaces = withdraws.aggregate(Sum("surface"))["surface__sum"] or 0
after_states_surfaces = self.after_states.all().aggregate(Sum("surface"))["surface__sum"] or withdraw_surfaces ## no division by zero
ret_val = after_states_surfaces - withdraw_surfaces
if as_percentage:
if after_states_surfaces > 0:
@ -299,22 +299,22 @@ class EcoAccount(AbstractCompensation):
return ret_msgs
class EcoAccountDeduction(BaseResource):
class EcoAccountWithdraw(BaseResource):
"""
A deduction object for eco accounts
A withdraw object for eco accounts
"""
account = models.ForeignKey(
EcoAccount,
on_delete=models.SET_NULL,
null=True,
blank=True,
help_text="Deducted from",
related_name="deductions",
help_text="Withdrawn from",
related_name="withdraws",
)
surface = models.FloatField(
null=True,
blank=True,
help_text="Amount deducted (m²)",
help_text="Amount withdrawn (m²)",
validators=[
MinValueValidator(limit_value=0.00),
]
@ -324,8 +324,8 @@ class EcoAccountDeduction(BaseResource):
on_delete=models.CASCADE,
null=True,
blank=True,
help_text="Deducted for",
related_name="deductions",
help_text="Withdrawn for",
related_name="withdraws",
)
def __str__(self):

View File

@ -252,7 +252,7 @@ class EcoAccountTable(BaseTable):
"""
html = ""
checked = value is not None
tooltip = _("Not recorded yet. Can not be used for deductions, yet.")
tooltip = _("Not recorded yet. Can not be used for withdraws, yet.")
if checked:
value = value.timestamp
value = localtime(value)

View File

@ -1,17 +1,17 @@
{% load i18n l10n fontawesome_5 humanize %}
<div id="eco-account-deductions" class="card">
<div id="eco-account-withdraws" class="card">
<div class="card-header rlp-r">
<div class="row">
<div class="col-sm-6">
<h5>
<span class="badge badge-light">{{deductions.count}}</span>
{% trans 'Eco Account Deductions' %}
<span class="badge badge-light">{{withdraws.count}}</span>
{% trans 'Eco Account Withdraws' %}
</h5>
</div>
<div class="col-sm-6">
<div class="d-flex justify-content-end">
{% if is_default_member and has_access %}
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:acc-new-deduction' obj.id %}" title="{% trans 'Add new deduction' %}">
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'compensation:acc-new-withdraw' obj.id %}" title="{% trans 'Add new withdraw' %}">
{% fa5_icon 'plus' %}
{% fa5_icon 'tree' %}
</button>
@ -42,25 +42,25 @@
</tr>
</thead>
<tbody>
{% for deduction in deductions %}
{% for withdraw in withdraws %}
<tr>
<td class="align-middle">
<a href="{% url 'intervention:open' deduction.intervention.id %}">
{{ deduction.intervention.identifier }}
<a href="{% url 'intervention:open' withdraw.intervention.id %}">
{{ withdraw.intervention.identifier }}
</a>
</td>
<td class="align-middle">
{% if deduction.intervention.recorded %}
<em title='{{ deduction.intervention.recorded_tooltip }}' class='fas fa-bookmark registered-bookmark'></em>
{% if withdraw.intervention.recorded %}
<em title='{{ withdraw.intervention.recorded_tooltip }}' class='fas fa-bookmark registered-bookmark'></em>
{% else %}
<em title='{{ deduction.intervention.recorded_tooltip }}' class='far fa-bookmark'></em>
<em title='{{ withdraw.intervention.recorded_tooltip }}' class='far fa-bookmark'></em>
{% endif %}
</td>
<td class="align-middle">{{ deduction.surface|floatformat:2|intcomma }} m²</td>
<td class="align-middle">{{ deduction.created.timestamp|default_if_none:""|naturalday}}</td>
<td class="align-middle">{{ withdraw.surface|floatformat:2|intcomma }} m²</td>
<td class="align-middle">{{ withdraw.created.timestamp|default_if_none:""|naturalday}}</td>
<td>
{% if is_default_member and has_access %}
<button data-form-url="{% url 'compensation:deduction-remove' deduction.account.id deduction.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove Deduction' %}">
<button data-form-url="{% url 'compensation:withdraw-remove' withdraw.account.id withdraw.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove Withdraw' %}">
{% fa5_icon 'trash' %}
</button>
{% endif %}

View File

@ -110,7 +110,7 @@
{% include 'compensation/detail/eco_account/includes/documents.html' %}
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
{% include 'compensation/detail/eco_account/includes/deductions.html' %}
{% include 'compensation/detail/eco_account/includes/withdraws.html' %}
</div>
</div>

View File

@ -16,7 +16,7 @@ from django.shortcuts import render, get_object_or_404
from compensation.forms import NewStateModalForm, NewActionModalForm, NewDeadlineModalForm
from compensation.models import EcoAccount
from compensation.tables import EcoAccountTable
from intervention.forms import NewDeductionForm
from intervention.forms import NewWithdrawForm
from konova.contexts import BaseContext
from konova.decorators import any_group_check, default_group_required, conservation_office_group_required
from konova.forms import RemoveModalForm, SimpleGeomForm, NewDocumentForm, RecordModalForm
@ -94,10 +94,10 @@ def open_view(request: HttpRequest, id: str):
sum_after_states = after_states.aggregate(Sum("surface"))["surface__sum"] or 0
diff_states = abs(sum_before_states - sum_after_states)
# Calculate rest of available surface for deductions
# Calculate rest of available surface for withdraws
available = acc.get_available_rest(as_percentage=True)
deductions = acc.deductions.filter(
withdraws = acc.withdraws.filter(
intervention__deleted=None,
)
@ -115,7 +115,7 @@ def open_view(request: HttpRequest, id: str):
"is_zb_member": in_group(_user, ZB_GROUP),
"is_ets_member": in_group(_user, ETS_GROUP),
"LANIS_LINK": acc.get_LANIS_link(),
"deductions": deductions,
"withdraws": withdraws,
}
context = BaseContext(request, context).context
return render(request, template, context)
@ -143,27 +143,27 @@ def remove_view(request: HttpRequest, id: str):
@login_required
@default_group_required
def deduction_remove_view(request: HttpRequest, id: str, deduction_id: str):
""" Renders a modal view for removing deductions
def withdraw_remove_view(request: HttpRequest, id: str, withdraw_id: str):
""" Renders a modal view for removing withdraws
Args:
request (HttpRequest): The incoming request
id (str): The eco account's id
deduction_id (str): The deduction's id
withdraw_id (str): The withdraw's id
Returns:
"""
acc = get_object_or_404(EcoAccount, id=id)
try:
eco_deduction = acc.deductions.get(id=deduction_id)
eco_withdraw = acc.withdraws.get(id=withdraw_id)
except ObjectDoesNotExist:
raise Http404("Unknown deduction")
raise Http404("Unknown withdraw")
form = RemoveModalForm(request.POST or None, instance=eco_deduction, user=request.user)
form = RemoveModalForm(request.POST or None, instance=eco_withdraw, user=request.user)
return form.process_request(
request=request,
msg_success=_("Deduction removed")
msg_success=_("Withdraw removed")
)
@ -291,19 +291,19 @@ def new_document_view(request: HttpRequest, id: str):
@login_required
@default_group_required
def new_deduction_view(request: HttpRequest, id: str):
""" Renders a modal form view for creating deductions
def new_withdraw_view(request: HttpRequest, id: str):
""" Renders a modal form view for creating withdraws
Args:
request (HttpRequest): THe incoming request
id (str): The eco account's id
request ():
id ():
Returns:
"""
acc = get_object_or_404(EcoAccount, id=id)
form = NewDeductionForm(request.POST or None, instance=acc, user=request.user)
form = NewWithdrawForm(request.POST or None, instance=acc, user=request.user)
return form.process_request(
request,
msg_success=_("Deduction added")
msg_success=_("Withdraw added")
)

View File

@ -14,7 +14,7 @@ from django.db import transaction
from django.urls import reverse
from django.utils.translation import gettext_lazy as _
from compensation.models import EcoAccountDeduction, EcoAccount
from compensation.models import EcoAccountWithdraw, EcoAccount
from intervention.models import Intervention, Revocation
from konova.forms import BaseForm, BaseModalForm
from konova.models import Document
@ -451,8 +451,8 @@ class RunCheckForm(BaseModalForm):
)
class NewDeductionForm(BaseModalForm):
""" Form for creating new deduction
class NewWithdrawForm(BaseModalForm):
""" Form for creating new withdraws
Can be used for Intervention view as well as for EcoAccount views.
@ -463,7 +463,7 @@ class NewDeductionForm(BaseModalForm):
account = forms.ModelChoiceField(
label=_("Eco-account"),
label_suffix="",
help_text=_("Only recorded accounts can be selected for deductions"),
help_text=_("Only recorded accounts can be selected for withdraws"),
queryset=EcoAccount.objects.filter(deleted=None),
widget=autocomplete.ModelSelect2(
url="accounts-autocomplete",
@ -497,8 +497,8 @@ class NewDeductionForm(BaseModalForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.form_title = _("New Deduction")
self.form_caption = _("Enter the information for a new deduction from a chosen eco-account")
self.form_title = _("New Withdraw")
self.form_caption = _("Enter the information for a new withdraw from a chosen eco-account")
self.is_intervention_initially = False
# Add a placeholder for field 'surface' without having to define the whole widget above
@ -520,7 +520,7 @@ class NewDeductionForm(BaseModalForm):
def is_valid(self):
""" Custom validity check
Makes sure the deduction can not contain more surface than the account still provides
Makes sure the withdraw can not contain more surface than the account still provides
Returns:
is_valid (bool)
@ -534,20 +534,20 @@ class NewDeductionForm(BaseModalForm):
if not acc.recorded:
self.add_error(
"account",
_("Eco-account {} is not recorded yet. You can only deduct from recorded accounts.").format(acc.identifier)
_("Eco-account {} is not recorded yet. You can only withdraw from recorded accounts.").format(acc.identifier)
)
return False
# Calculate valid surface
sum_surface = acc.get_surface()
sum_surface_deductions = acc.get_deductions_surface()
rest_surface = sum_surface - sum_surface_deductions
sum_surface_withdraws = acc.get_surface_withdraws()
rest_surface = sum_surface - sum_surface_withdraws
form_surface = float(self.cleaned_data["surface"])
is_valid_surface = form_surface < rest_surface
if not is_valid_surface:
self.add_error(
"surface",
_("The account {} has not enough surface for a deduction of {} m². There are only {} m² left").format(acc.identifier, form_surface, rest_surface),
_("The account {} has not enough surface for a withdraw of {} m². There are only {} m² left").format(acc.identifier, form_surface, rest_surface),
)
return is_valid_surface and super_result
@ -566,19 +566,19 @@ class NewDeductionForm(BaseModalForm):
self.instance.modified = user_action_edit
self.instance.save()
# Create deductions depending on Intervention or EcoAccount as the initial instance
# Create withdraw depending on Intervention or EcoAccount as the initial instance
if self.is_intervention_initially:
deduction = EcoAccountDeduction.objects.create(
withdraw = EcoAccountWithdraw.objects.create(
intervention=self.instance,
account=self.cleaned_data["account"],
surface=self.cleaned_data["surface"],
created=user_action_create,
)
else:
deduction = EcoAccountDeduction.objects.create(
withdraw = EcoAccountWithdraw.objects.create(
intervention=self.cleaned_data["intervention"],
account=self.instance,
surface=self.cleaned_data["surface"],
created=user_action_create,
)
return deduction
return withdraw

View File

@ -1,17 +1,17 @@
{% load i18n l10n fontawesome_5 humanize %}
<div id="eco-account-deductions" class="card">
<div id="eco-account-withdraws" class="card">
<div class="card-header rlp-r">
<div class="row">
<div class="col-sm-6">
<h5>
<span class="badge badge-light">{{intervention.deductions.count}}</span>
{% trans 'Eco Account Deductions' %}
<span class="badge badge-light">{{intervention.withdraws.count}}</span>
{% trans 'Eco Account Withdraws' %}
</h5>
</div>
<div class="col-sm-6">
<div class="d-flex justify-content-end">
{% if is_default_member and has_access %}
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'intervention:acc-new-deduction' intervention.id %}" title="{% trans 'Add new deduction' %}">
<button class="btn btn-outline-default btn-modal" data-form-url="{% url 'intervention:acc-new-withdraw' intervention.id %}" title="{% trans 'Add new withdraw' %}">
{% fa5_icon 'plus' %}
{% fa5_icon 'tree' %}
</button>
@ -39,21 +39,21 @@
</tr>
</thead>
<tbody>
{% for deduction in intervention.deductions.all %}
<tr {% if deduction.account.deleted %}class="align-middle alert-danger" title="{% trans 'Eco-account deleted! Deduction invalid!' %}" {% elif not deduction.account.recorded %}class="align-middle alert-danger" title="{% trans 'Eco-account not recorded! Deduction invalid!' %}" {% endif %}>
{% for withdraw in intervention.withdraws.all %}
<tr {% if withdraw.account.deleted %}class="align-middle alert-danger" title="{% trans 'Eco-account deleted! Withdraw invalid!' %}" {% elif not withdraw.account.recorded %}class="align-middle alert-danger" title="{% trans 'Eco-account not recorded! Withdraw invalid!' %}" {% endif %}>
<td class="align-middle">
<a href="{% url 'compensation:acc-open' deduction.account.id %}">
{% if deduction.account.deleted or not deduction.account.recorded %}
<a href="{% url 'compensation:acc-open' withdraw.account.id %}">
{% if withdraw.account.deleted or not withdraw.account.recorded %}
{% fa5_icon 'exclamation-triangle' %}
{% endif %}
{{ deduction.account.identifier }}
{{ withdraw.account.identifier }}
</a>
</td>
<td class="align-middle">{{ deduction.surface|floatformat:2|intcomma }} m²</td>
<td class="align-middle">{{ deduction.created.timestamp|default_if_none:""|naturalday}}</td>
<td class="align-middle">{{ withdraw.surface|floatformat:2|intcomma }} m²</td>
<td class="align-middle">{{ withdraw.created.timestamp|default_if_none:""|naturalday}}</td>
<td>
{% if is_default_member and has_access %}
<button data-form-url="{% url 'compensation:deduction-remove' deduction.account.id deduction.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove Deduction' %}">
<button data-form-url="{% url 'compensation:withdraw-remove' withdraw.account.id withdraw.id %}" class="btn btn-default btn-modal" title="{% trans 'Remove Withdraw' %}">
{% fa5_icon 'trash' %}
</button>
{% endif %}

View File

@ -133,7 +133,7 @@
</div>
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-6">
{% include 'intervention/detail/includes/deductions.html' %}
{% include 'intervention/detail/includes/withdraws.html' %}
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
{% include 'intervention/detail/includes/revocation.html' %}

View File

@ -8,7 +8,7 @@ Created on: 30.11.20
from django.urls import path
from intervention.views import index_view, new_view, open_view, edit_view, remove_view, new_document_view, share_view, \
create_share_view, remove_revocation_view, new_revocation_view, run_check_view, log_view, new_deduction_view, \
create_share_view, remove_revocation_view, new_revocation_view, run_check_view, log_view, new_withdraw_view, \
record_view
app_name = "intervention"
@ -25,8 +25,8 @@ urlpatterns = [
path('<id>/check', run_check_view, name='run-check'),
path('<id>/record', record_view, name='record'),
# Deductions
path('<id>/deduction/new', new_deduction_view, name='acc-new-deduction'),
# Withdraws
path('<id>/withdraw/new', new_withdraw_view, name='acc-new-withdraw'),
# Revocation routes
path('<id>/revocation/new', new_revocation_view, name='new-revocation'),

View File

@ -5,7 +5,7 @@ from django.http import HttpRequest
from django.shortcuts import render, get_object_or_404
from intervention.forms import NewInterventionForm, EditInterventionForm, ShareInterventionForm, NewRevocationForm, \
RunCheckForm, NewDeductionForm
RunCheckForm, NewWithdrawForm
from intervention.models import Intervention, Revocation
from intervention.tables import InterventionTable
from konova.contexts import BaseContext
@ -341,21 +341,21 @@ def log_view(request: HttpRequest, id: str):
@login_required
@default_group_required
def new_deduction_view(request: HttpRequest, id: str):
""" Renders a modal form view for creating deductions
def new_withdraw_view(request: HttpRequest, id: str):
""" Renders a modal form view for creating withdraws
Args:
request (HttpRequest): The incoming request
id (str): The intervention's id which shall benefit from this deduction
id (str): The intervention's id which shall get a new withdraw
Returns:
"""
intervention = get_object_or_404(Intervention, id=id)
form = NewDeductionForm(request.POST or None, instance=intervention, user=request.user)
form = NewWithdrawForm(request.POST or None, instance=intervention, user=request.user)
return form.process_request(
request,
msg_success=_("Deduction added")
msg_success=_("Withdraw added")
)

View File

@ -127,7 +127,7 @@
<div class="col-sm">
<div class="row my-1">
<a href="{% url 'home' %}">
<button class="btn btn-default">{% fa5_icon 'magic' %} {% trans 'Deduct' %}</button>
<button class="btn btn-default">{% fa5_icon 'magic' %} {% trans 'Withdraw' %}</button>
</a>
</div>
</div>

Binary file not shown.

View File

@ -172,7 +172,7 @@ msgstr "Maßnahmentyp wählen"
#: compensation/templates/compensation/detail/eco_account/includes/documents.html:34
#: compensation/templates/compensation/detail/eco_account/includes/states-after.html:39
#: compensation/templates/compensation/detail/eco_account/includes/states-before.html:39
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:37
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:37
#: ema/templates/ema/detail/includes/actions.html:37
#: ema/templates/ema/detail/includes/deadlines.html:37
#: ema/templates/ema/detail/includes/documents.html:34
@ -182,7 +182,7 @@ msgstr "Maßnahmentyp wählen"
#: intervention/templates/intervention/detail/includes/documents.html:34
#: intervention/templates/intervention/detail/includes/payments.html:37
#: intervention/templates/intervention/detail/includes/revocation.html:41
#: intervention/templates/intervention/detail/includes/deductions.html:37
#: intervention/templates/intervention/detail/includes/withdraws.html:37
#: templates/log.html:10
msgid "Action"
msgstr "Aktionen"
@ -196,8 +196,8 @@ msgid "Select the unit"
msgstr "Einheit wählen"
#: compensation/forms.py:334
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31
#: intervention/templates/intervention/detail/includes/deductions.html:31
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:31
#: intervention/templates/intervention/detail/includes/withdraws.html:31
msgid "Amount"
msgstr "Menge"
@ -353,7 +353,7 @@ msgid "Eco-account"
msgstr "Ökokonto"
#: compensation/tables.py:255
msgid "Not recorded yet. Can not be used for deductions, yet."
msgid "Not recorded yet. Can not be used for withdraws, yet."
msgstr ""
"Noch nicht verzeichnet. Kann noch nicht für Abbuchungen genutzt werden."
@ -576,39 +576,39 @@ msgstr "Entzeichnen"
msgid "Record"
msgstr "Verzeichnen"
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:8
#: intervention/templates/intervention/detail/includes/deductions.html:8
msgid "Eco Account Deductions"
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:8
#: intervention/templates/intervention/detail/includes/withdraws.html:8
msgid "Eco Account Withdraws"
msgstr "Ökokonto Abbuchungen"
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:14
#: intervention/templates/intervention/detail/includes/deductions.html:14
msgid "Add new deduction"
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:14
#: intervention/templates/intervention/detail/includes/withdraws.html:14
msgid "Add new withdraw"
msgstr "Neue Abbuchung hinzufügen"
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:28
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:28
msgid "Intervention Identifier"
msgstr "Eingriffskennung"
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:34
#: intervention/templates/intervention/detail/includes/deductions.html:34
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:34
#: intervention/templates/intervention/detail/includes/withdraws.html:34
#: user/models.py:51
msgid "Created"
msgstr "Erstellt"
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:43
#: intervention/templates/intervention/detail/includes/deductions.html:43
msgid "Eco-account deleted! Deduction invalid!"
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:43
#: intervention/templates/intervention/detail/includes/withdraws.html:43
msgid "Eco-account deleted! Withdraw invalid!"
msgstr "Ökokonto gelöscht! Abbuchung ungültig!"
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:43
#: intervention/templates/intervention/detail/includes/deductions.html:43
msgid "Eco-account not recorded! Deduction invalid!"
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:43
#: intervention/templates/intervention/detail/includes/withdraws.html:43
msgid "Eco-account not recorded! Withdraw invalid!"
msgstr "Ökokonto nicht verzeichnet! Abbuchung ungültig!"
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:56
#: intervention/templates/intervention/detail/includes/deductions.html:56
msgid "Remove Deduction"
#: compensation/templates/compensation/detail/eco_account/includes/withdraws.html:56
#: intervention/templates/intervention/detail/includes/withdraws.html:56
msgid "Remove Withdraw"
msgstr "Abbuchung entfernen"
#: compensation/templates/compensation/detail/eco_account/view.html:57
@ -687,7 +687,7 @@ msgid "Eco-account removed"
msgstr "Ökokonto entfernt"
#: compensation/views/eco_account_views.py:161
msgid "Deduction removed"
msgid "Withdraw removed"
msgstr "Abbuchung entfernt"
#: compensation/views/eco_account_views.py:204 ema/views.py:170
@ -701,7 +701,7 @@ msgid "{} recorded"
msgstr "{} verzeichnet"
#: compensation/views/eco_account_views.py:303 intervention/views.py:358
msgid "Deduction added"
msgid "Withdraw added"
msgstr "Abbuchung hinzugefügt"
#: compensation/views/payment_views.py:36
@ -874,7 +874,7 @@ msgstr ""
"wurden:"
#: intervention/forms.py:464
msgid "Only recorded accounts can be selected for deductions"
msgid "Only recorded accounts can be selected for withdraws"
msgstr "Nur verzeichnete Ökokonten können für Abbuchungen verwendet werden."
#: intervention/forms.py:483 intervention/forms.py:490
@ -889,16 +889,16 @@ msgid "Only shared interventions can be selected"
msgstr "Nur freigegebene Eingriffe können gewählt werden"
#: intervention/forms.py:498
msgid "New Deduction"
msgid "New Withdraw"
msgstr "Neue Abbuchung"
#: intervention/forms.py:499
msgid "Enter the information for a new deduction from a chosen eco-account"
msgid "Enter the information for a new withdraw from a chosen eco-account"
msgstr "Geben Sie die Informationen für eine neue Abbuchung ein."
#: intervention/forms.py:535
msgid ""
"Eco-account {} is not recorded yet. You can only deduct from recorded "
"Eco-account {} is not recorded yet. You can only withdraw from recorded "
"accounts."
msgstr ""
"Ökokonto {} ist noch nicht verzeichnet. Abbuchungen können nur von "
@ -906,7 +906,7 @@ msgstr ""
#: intervention/forms.py:548
msgid ""
"The account {} has not enough surface for a deduction of {} m². There are "
"The account {} has not enough surface for a withdraw of {} m². There are "
"only {} m² left"
msgstr ""
"Das Ökokonto {} hat für eine Abbuchung von {} m² nicht ausreichend "
@ -992,7 +992,7 @@ msgstr "Vom"
msgid "Remove revocation"
msgstr "Widerspruch entfernen"
#: intervention/templates/intervention/detail/includes/deductions.html:28
#: intervention/templates/intervention/detail/includes/withdraws.html:28
msgid "Account Identifier"
msgstr "Ökokonto Kennung"
@ -1230,7 +1230,7 @@ msgid "Show"
msgstr "Anzeigen"
#: konova/templates/konova/home.html:130
msgid "Deduct"
msgid "Withdraw"
msgstr "Abbuchen"
#: konova/utils/message_templates.py:11
@ -2759,7 +2759,7 @@ msgstr ""
#~ msgid "New eco-account"
#~ msgstr "Neues Ökokonto"
#~ msgid "Deduct from eco-account"
#~ msgid "Withdraw from eco-account"
#~ msgstr "Von Konto abbuchen"
#~ msgid "You are currently working as "