diff --git a/compensation/models.py b/compensation/models.py index 2732f9c7..4ab3f952 100644 --- a/compensation/models.py +++ b/compensation/models.py @@ -9,12 +9,14 @@ import shutil from django.contrib.auth.models import User from django.contrib.gis.db import models +from django.core.exceptions import ValidationError from django.core.validators import MinValueValidator from django.db.models import Sum, QuerySet from django.utils.translation import gettext_lazy as _ from codelist.models import KonovaCode -from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_BIOTOPES_ID +from codelist.settings import CODELIST_COMPENSATION_ACTION_ID, CODELIST_BIOTOPES_ID, \ + CODELIST_COMPENSATION_COMBINATION_ID from intervention.models import Intervention, ResponsibilityData from konova.models import BaseObject, BaseResource, Geometry, UuidModel, AbstractDocument, \ generate_document_file_upload_path @@ -137,6 +139,18 @@ class AbstractCompensation(BaseObject): after_states = models.ManyToManyField(CompensationState, blank=True, related_name='+', help_text="Refers to 'Zielzustand Biotop'") actions = models.ManyToManyField(CompensationAction, blank=True, help_text="Refers to 'Maßnahmen'") + fundings = models.ManyToManyField( + KonovaCode, + null=True, + blank=True, + limit_choices_to={ + "code_lists__in": [CODELIST_COMPENSATION_COMBINATION_ID], + "is_selectable": True, + "is_archived": False, + }, + help_text="List of funding project codes", + ) + deadlines = models.ManyToManyField("konova.Deadline", blank=True, related_name="+") geometry = models.ForeignKey(Geometry, null=True, blank=True, on_delete=models.SET_NULL) @@ -281,9 +295,30 @@ class EcoAccount(AbstractCompensation): related_name="+" ) + deductable_surface = models.FloatField( + blank=True, + null=True, + help_text="Amount of deductable surface - can be lower than the total surface due to deduction limitations", + default=0, + ) + def __str__(self): return "{}".format(self.identifier) + def clean(self): + # Deductable surface can not be larger than added states after surface + after_state_sum = self.get_state_after_surface_sum() + if self.deductable_surface > after_state_sum: + raise ValidationError(_("Deductable surface can not be larger than existing surfaces in after states")) + + # Deductable surface can not be lower than amount of already deducted surfaces + # User needs to contact deducting user in case of further problems + deducted_sum = self.get_deductions_surface() + if self.deductable_surface < deducted_sum: + raise ValidationError( + _("Deductable surface can not be smaller than the sum of already existing deductions. Please contact the responsible users for the deductions!") + ) + def save(self, *args, **kwargs): if self.identifier is None or len(self.identifier) == 0: # Create new identifier @@ -293,15 +328,34 @@ class EcoAccount(AbstractCompensation): self.identifier = new_id super().save(*args, **kwargs) + @property + def deductions_surface_sum(self) -> float: + """ Shortcut for get_deductions_surface. + + Can be used in templates + + Returns: + sum_surface (float) + """ + return self.get_deductions_surface() + def get_deductions_surface(self) -> float: - """ Calculates the account's deductions sum surface + """ Calculates the account's deductions surface sum Returns: sum_surface (float) """ return self.deductions.all().aggregate(Sum("surface"))["surface__sum"] or 0 - def get_available_rest(self, as_percentage: bool = False): + def get_state_after_surface_sum(self) -> float: + """ Calculates the account's after state surface sum + + Returns: + sum_surface (float) + """ + return self.after_states.all().aggregate(Sum("surface"))["surface__sum"] or 0 + + def get_available_rest(self, as_percentage: bool = False) -> float: """ Calculates available rest surface of the eco account Args: @@ -310,17 +364,16 @@ class EcoAccount(AbstractCompensation): Returns: """ - ret_val = 0 deductions = self.deductions.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 + available_surfaces = self.deductable_surface or deductions_surfaces ## no division by zero + ret_val = available_surfaces - deductions_surfaces if as_percentage: - if after_states_surfaces > 0: - ret_val = int((ret_val / after_states_surfaces) * 100) + if available_surfaces > 0: + ret_val = int((ret_val / available_surfaces) * 100) else: ret_val = 0 return ret_val diff --git a/compensation/templates/compensation/detail/compensation/view.html b/compensation/templates/compensation/detail/compensation/view.html index f0c0c1ad..6401cdb7 100644 --- a/compensation/templates/compensation/detail/compensation/view.html +++ b/compensation/templates/compensation/detail/compensation/view.html @@ -66,6 +66,19 @@ {% endif %} + + {% trans 'Funded by' %} + + {% for funding in obj.fundings.all %} +
+ {{ funding.short_name}} +
+
+ {% empty %} + None + {% endfor %} + + {% trans 'Last modified' %} diff --git a/compensation/templates/compensation/detail/eco_account/view.html b/compensation/templates/compensation/detail/eco_account/view.html index f591b2c1..f03c22b2 100644 --- a/compensation/templates/compensation/detail/eco_account/view.html +++ b/compensation/templates/compensation/detail/eco_account/view.html @@ -33,6 +33,7 @@ {% trans 'Available' %} + {{obj.deductions_surface_sum|floatformat:2}} / {{obj.deductable_surface|floatformat:2}} m² {% with available as value %} {% include 'konova/custom_widgets/progressbar.html' %} {% endwith %} @@ -64,6 +65,19 @@ {% trans 'Intervention handler' %} {{obj.responsible.handler|default_if_none:""}} + + {% trans 'Funded by' %} + + {% for funding in obj.fundings.all %} +
+ {{ funding.short_name}} +
+
+ {% empty %} + {% trans 'None' %} + {% endfor %} + + {% trans 'Last modified' %} diff --git a/intervention/forms.py b/intervention/forms.py index 508dbacb..c84c51c6 100644 --- a/intervention/forms.py +++ b/intervention/forms.py @@ -18,6 +18,7 @@ from compensation.models import EcoAccountDeduction, EcoAccount from intervention.models import Intervention, Revocation, RevocationDocument from konova.forms import BaseForm, BaseModalForm from konova.settings import DEFAULT_LAT, DEFAULT_LON, DEFAULT_ZOOM, ZB_GROUP, ETS_GROUP +from konova.utils.general import format_german_float from konova.utils.messenger import Messenger from konova.utils.user_checks import in_group from organisation.models import Organisation @@ -545,7 +546,11 @@ class NewDeductionForm(BaseModalForm): 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 deduction of {} m². There are only {} m² left").format( + acc.identifier, + format_german_float(form_surface), + format_german_float(rest_surface), + ), ) return is_valid_surface and super_result diff --git a/konova/utils/general.py b/konova/utils/general.py new file mode 100644 index 00000000..b7ee0ea8 --- /dev/null +++ b/konova/utils/general.py @@ -0,0 +1,21 @@ +""" +Author: Michel Peltriaux +Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany +Contact: michel.peltriaux@sgdnord.rlp.de +Created on: 17.09.21 + +""" + + +def format_german_float(num) -> str: + """ Writes a float into a string based on german float notation + + 10000.000 --> "10.000,00" + + Args: + num (float): The number + + Returns: + num (str): The number as german Gleitkommazahl + """ + return format(num, "0,.2f").replace(",", "X").replace(".", ",").replace("X", ".") diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo index 2ee53066..51178b8f 100644 Binary files a/locale/de/LC_MESSAGES/django.mo and b/locale/de/LC_MESSAGES/django.mo differ diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index b3405d5d..757a35b9 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -10,13 +10,13 @@ #: intervention/forms.py:322 intervention/forms.py:334 #: intervention/forms.py:347 konova/forms.py:108 konova/forms.py:252 #: konova/forms.py:287 konova/forms.py:292 konova/forms.py:304 -#: konova/forms.py:316 konova/forms.py:329 user/forms.py:38 +#: konova/forms.py:316 konova/forms.py:336 user/forms.py:38 #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-26 14:59+0200\n" +"POT-Creation-Date: 2021-09-20 12:44+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -56,7 +56,7 @@ msgstr "Zahlung wird an diesem Datum erwartet" #: intervention/forms.py:346 #: intervention/templates/intervention/detail/includes/documents.html:31 #: intervention/templates/intervention/detail/includes/payments.html:34 -#: intervention/templates/intervention/detail/includes/revocation.html:35 +#: intervention/templates/intervention/detail/includes/revocation.html:38 #: konova/forms.py:315 msgid "Comment" msgstr "Kommentar" @@ -97,11 +97,11 @@ msgstr "Biotoptyp wählen" #: compensation/templates/compensation/detail/eco_account/includes/states-before.html:36 #: ema/templates/ema/detail/includes/states-after.html:36 #: ema/templates/ema/detail/includes/states-before.html:36 -#: intervention/forms.py:478 +#: intervention/forms.py:479 msgid "Surface" msgstr "Fläche" -#: compensation/forms.py:155 intervention/forms.py:480 +#: compensation/forms.py:155 intervention/forms.py:481 msgid "in m²" msgstr "" @@ -169,20 +169,20 @@ msgstr "Maßnahmentyp wählen" #: compensation/templates/compensation/detail/compensation/includes/states-before.html:39 #: compensation/templates/compensation/detail/eco_account/includes/actions.html:37 #: compensation/templates/compensation/detail/eco_account/includes/deadlines.html:37 +#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:40 #: 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 #: ema/templates/ema/detail/includes/actions.html:37 #: ema/templates/ema/detail/includes/deadlines.html:37 #: ema/templates/ema/detail/includes/documents.html:34 #: ema/templates/ema/detail/includes/states-after.html:39 #: ema/templates/ema/detail/includes/states-before.html:39 #: intervention/templates/intervention/detail/includes/compensations.html:36 +#: intervention/templates/intervention/detail/includes/deductions.html:37 #: 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 #: templates/log.html:10 msgid "Action" msgstr "Aktionen" @@ -196,7 +196,7 @@ msgid "Select the unit" msgstr "Einheit wählen" #: compensation/forms.py:334 -#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31 +#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:34 #: intervention/templates/intervention/detail/includes/deductions.html:31 msgid "Amount" msgstr "Menge" @@ -217,32 +217,47 @@ msgstr "Geben Sie die Daten der neuen Maßnahme ein" msgid "Added action" msgstr "Maßnahme hinzugefügt" -#: compensation/models.py:67 +#: compensation/models.py:78 msgid "cm" msgstr "" -#: compensation/models.py:68 +#: compensation/models.py:79 msgid "m" msgstr "" -#: compensation/models.py:69 +#: compensation/models.py:80 msgid "km" msgstr "" -#: compensation/models.py:70 +#: compensation/models.py:81 msgid "m²" msgstr "" -#: compensation/models.py:71 +#: compensation/models.py:82 msgid "ha" msgstr "" -#: compensation/models.py:72 +#: compensation/models.py:83 msgid "Pieces" msgstr "Stück" +#: compensation/models.py:312 +msgid "" +"Deductable surface can not be larger than existing surfaces in after states" +msgstr "" +"Die abbuchbare Fläche darf die Gesamtfläche der Zielzustände nicht " +"überschreiten" + +#: compensation/models.py:319 +msgid "" +"Deductable surface can not be smaller than the sum of already existing " +"deductions. Please contact the responsible users for the deductions!" +msgstr "" +"Es wurde bereits mehr Fläche abgebucht, als Sie nun als abbuchbar einstellen " +"wollen. Kontaktieren Sie die für die Abbuchungen verantwortlichen Nutzer!" + #: compensation/tables.py:24 compensation/tables.py:164 ema/tables.py:28 -#: intervention/forms.py:30 intervention/tables.py:24 +#: intervention/forms.py:30 intervention/tables.py:23 #: intervention/templates/intervention/detail/includes/compensations.html:30 msgid "Identifier" msgstr "Kennung" @@ -254,7 +269,7 @@ msgstr "Kennung" #: compensation/templates/compensation/detail/eco_account/view.html:31 #: ema/tables.py:33 ema/templates/ema/detail/includes/documents.html:28 #: ema/templates/ema/detail/view.html:24 intervention/forms.py:37 -#: intervention/tables.py:29 +#: intervention/tables.py:28 #: intervention/templates/intervention/detail/includes/compensations.html:33 #: intervention/templates/intervention/detail/includes/documents.html:28 #: intervention/templates/intervention/detail/view.html:31 konova/forms.py:286 @@ -263,27 +278,28 @@ msgstr "Bezeichnung" #: compensation/tables.py:34 #: compensation/templates/compensation/detail/compensation/view.html:43 -#: intervention/tables.py:34 +#: intervention/tables.py:33 #: intervention/templates/intervention/detail/view.html:63 user/models.py:48 msgid "Checked" msgstr "Geprüft" #: compensation/tables.py:40 compensation/tables.py:179 #: compensation/templates/compensation/detail/compensation/view.html:57 -#: compensation/templates/compensation/detail/eco_account/view.html:43 +#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31 +#: compensation/templates/compensation/detail/eco_account/view.html:44 #: ema/tables.py:38 ema/templates/ema/detail/view.html:28 -#: intervention/tables.py:40 +#: intervention/tables.py:39 #: intervention/templates/intervention/detail/view.html:77 user/models.py:49 msgid "Recorded" msgstr "Verzeichnet" #: compensation/tables.py:46 compensation/tables.py:185 ema/tables.py:44 -#: intervention/tables.py:52 +#: intervention/tables.py:51 msgid "Editable" msgstr "Freigegeben" #: compensation/tables.py:52 compensation/tables.py:191 ema/tables.py:50 -#: intervention/tables.py:58 +#: intervention/tables.py:57 msgid "Last edit" msgstr "Zuletzt bearbeitet" @@ -293,7 +309,7 @@ msgid "Compensations" msgstr "Kompensationen" #: compensation/tables.py:83 compensation/tables.py:222 ema/tables.py:82 -#: intervention/tables.py:89 +#: intervention/tables.py:88 msgid "Open {}" msgstr "Öffne {}" @@ -303,35 +319,35 @@ msgstr "Öffne {}" msgid "Compensation" msgstr "Kompensation" -#: compensation/tables.py:104 intervention/tables.py:108 +#: compensation/tables.py:104 intervention/tables.py:107 msgid "Not checked yet" msgstr "Noch nicht geprüft" -#: compensation/tables.py:109 intervention/tables.py:113 +#: compensation/tables.py:109 intervention/tables.py:112 msgid "Checked on {} by {}" msgstr "Am {} von {} geprüft worden" #: compensation/tables.py:128 #: compensation/templates/compensation/detail/compensation/view.html:60 -#: compensation/templates/compensation/detail/eco_account/view.html:46 +#: compensation/templates/compensation/detail/eco_account/view.html:47 #: ema/tables.py:101 ema/templates/ema/detail/view.html:31 -#: intervention/tables.py:132 +#: intervention/models.py:360 intervention/tables.py:131 #: intervention/templates/intervention/detail/view.html:80 msgid "Not recorded yet" msgstr "Noch nicht verzeichnet" #: compensation/tables.py:133 compensation/tables.py:260 ema/tables.py:106 -#: intervention/tables.py:137 +#: intervention/models.py:365 intervention/tables.py:136 msgid "Recorded on {} by {}" msgstr "Am {} von {} verzeichnet worden" #: compensation/tables.py:156 compensation/tables.py:283 ema/tables.py:129 -#: intervention/tables.py:160 +#: intervention/tables.py:159 msgid "Full access granted" msgstr "Für Sie freigegeben - Datensatz kann bearbeitet werden" #: compensation/tables.py:156 compensation/tables.py:283 ema/tables.py:129 -#: intervention/tables.py:160 +#: intervention/tables.py:159 msgid "Access not granted" msgstr "Nicht freigegeben - Datensatz nur lesbar" @@ -347,7 +363,7 @@ msgstr "Ökokonten" #: compensation/tables.py:222 #: compensation/templates/compensation/detail/eco_account/view.html:19 -#: intervention/forms.py:462 intervention/forms.py:469 +#: intervention/forms.py:463 intervention/forms.py:470 #: konova/templates/konova/home.html:88 templates/navbar.html:34 msgid "Eco-account" msgstr "Ökokonto" @@ -460,7 +476,7 @@ msgstr "Dokumente" #: compensation/templates/compensation/detail/eco_account/includes/documents.html:14 #: ema/templates/ema/detail/includes/documents.html:14 #: intervention/templates/intervention/detail/includes/documents.html:14 -#: konova/forms.py:328 +#: konova/forms.py:335 msgid "Add new document" msgstr "Neues Dokument hinzufügen" @@ -536,7 +552,7 @@ msgstr "Geprüft am " #: compensation/templates/compensation/detail/compensation/view.html:50 #: compensation/templates/compensation/detail/compensation/view.html:64 -#: compensation/templates/compensation/detail/eco_account/view.html:50 +#: compensation/templates/compensation/detail/eco_account/view.html:51 #: ema/templates/ema/detail/view.html:35 #: intervention/templates/intervention/detail/view.html:70 #: intervention/templates/intervention/detail/view.html:84 @@ -544,21 +560,21 @@ msgid "by" msgstr "von" #: compensation/templates/compensation/detail/compensation/view.html:64 -#: compensation/templates/compensation/detail/eco_account/view.html:50 +#: compensation/templates/compensation/detail/eco_account/view.html:51 #: ema/templates/ema/detail/view.html:35 #: intervention/templates/intervention/detail/view.html:84 msgid "Recorded on " msgstr "Verzeichnet am" #: compensation/templates/compensation/detail/compensation/view.html:71 -#: compensation/templates/compensation/detail/eco_account/view.html:69 +#: compensation/templates/compensation/detail/eco_account/view.html:83 #: ema/templates/ema/detail/view.html:54 #: intervention/templates/intervention/detail/view.html:103 msgid "Last modified" msgstr "Zuletzt bearbeitet" #: compensation/templates/compensation/detail/compensation/view.html:79 -#: compensation/templates/compensation/detail/eco_account/view.html:77 +#: compensation/templates/compensation/detail/eco_account/view.html:91 #: ema/templates/ema/detail/view.html:69 intervention/forms.py:255 #: intervention/templates/intervention/detail/view.html:111 msgid "Shared with" @@ -590,40 +606,28 @@ msgstr "Neue Abbuchung hinzufügen" msgid "Intervention Identifier" msgstr "Eingriffskennung" -#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:34 +#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:37 #: intervention/templates/intervention/detail/includes/deductions.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!" -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!" -msgstr "Ökokonto nicht verzeichnet! Abbuchung ungültig!" - -#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:56 +#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:63 #: intervention/templates/intervention/detail/includes/deductions.html:56 msgid "Remove Deduction" msgstr "Abbuchung entfernen" #: compensation/templates/compensation/detail/eco_account/view.html:57 -#: ema/templates/ema/detail/view.html:42 -#: intervention/templates/intervention/detail/view.html:51 -msgid "Conservation office" -msgstr "Naturschutzbehörde" - -#: compensation/templates/compensation/detail/eco_account/view.html:60 -#: compensation/templates/compensation/detail/eco_account/view.html:64 -#: ema/templates/ema/detail/view.html:45 ema/templates/ema/detail/view.html:49 +#: compensation/templates/compensation/detail/eco_account/view.html:61 +#: compensation/templates/compensation/detail/eco_account/view.html:65 +#: ema/templates/ema/detail/view.html:41 ema/templates/ema/detail/view.html:45 +#: ema/templates/ema/detail/view.html:49 #: intervention/templates/intervention/detail/view.html:30 #: intervention/templates/intervention/detail/view.html:34 #: intervention/templates/intervention/detail/view.html:38 +#: intervention/templates/intervention/detail/view.html:42 #: intervention/templates/intervention/detail/view.html:46 +#: intervention/templates/intervention/detail/view.html:50 #: intervention/templates/intervention/detail/view.html:54 #: intervention/templates/intervention/detail/view.html:58 #: intervention/templates/intervention/detail/view.html:90 @@ -631,76 +635,87 @@ msgstr "Naturschutzbehörde" msgid "Missing" msgstr "Fehlt" -#: compensation/templates/compensation/detail/eco_account/view.html:61 +#: compensation/templates/compensation/detail/eco_account/view.html:58 +#: ema/templates/ema/detail/view.html:42 +#: intervention/templates/intervention/detail/view.html:51 +msgid "Conservation office" +msgstr "Naturschutzbehörde" + +#: compensation/templates/compensation/detail/eco_account/view.html:62 #: ema/templates/ema/detail/view.html:46 #: intervention/templates/intervention/detail/view.html:55 msgid "Conversation office file number" msgstr "Aktenzeichen Naturschutzbehörde" -#: compensation/templates/compensation/detail/eco_account/view.html:65 +#: compensation/templates/compensation/detail/eco_account/view.html:66 #: ema/templates/ema/detail/view.html:50 intervention/forms.py:54 #: intervention/templates/intervention/detail/view.html:59 msgid "Intervention handler" msgstr "Eingriffsverursacher" -#: compensation/views/compensation_views.py:122 -#: compensation/views/eco_account_views.py:184 ema/views.py:127 -#: intervention/views.py:336 +#: compensation/templates/compensation/detail/eco_account/view.html:70 +msgid "Funded by" +msgstr "Gefördert mit" + + +#: compensation/views/compensation_views.py:123 +#: compensation/views/eco_account_views.py:190 ema/views.py:128 +#: intervention/views.py:391 msgid "Log" msgstr "Log" -#: compensation/views/compensation_views.py:143 +#: compensation/views/compensation_views.py:144 msgid "Compensation removed" msgstr "Kompensation entfernt" -#: compensation/views/compensation_views.py:162 -#: compensation/views/eco_account_views.py:283 ema/views.py:249 -#: intervention/views.py:93 +#: compensation/views/compensation_views.py:163 +#: compensation/views/eco_account_views.py:289 ema/views.py:250 +#: intervention/views.py:94 msgid "Document added" msgstr "Dokument hinzugefügt" -#: compensation/views/compensation_views.py:181 -#: compensation/views/eco_account_views.py:227 ema/views.py:193 +#: compensation/views/compensation_views.py:219 +#: compensation/views/eco_account_views.py:233 ema/views.py:194 msgid "State added" msgstr "Zustand hinzugefügt" -#: compensation/views/compensation_views.py:200 -#: compensation/views/eco_account_views.py:246 ema/views.py:212 +#: compensation/views/compensation_views.py:238 +#: compensation/views/eco_account_views.py:252 ema/views.py:213 msgid "Action added" msgstr "Maßnahme hinzugefügt" -#: compensation/views/compensation_views.py:219 -#: compensation/views/eco_account_views.py:265 ema/views.py:231 +#: compensation/views/compensation_views.py:257 +#: compensation/views/eco_account_views.py:271 ema/views.py:232 msgid "Deadline added" msgstr "Frist/Termin hinzugefügt" -#: compensation/views/compensation_views.py:238 +#: compensation/views/compensation_views.py:276 msgid "State removed" msgstr "Zustand gelöscht" -#: compensation/views/compensation_views.py:257 +#: compensation/views/compensation_views.py:295 msgid "Action removed" msgstr "Maßnahme entfernt" -#: compensation/views/eco_account_views.py:134 +#: compensation/views/eco_account_views.py:140 msgid "Eco-account removed" msgstr "Ökokonto entfernt" -#: compensation/views/eco_account_views.py:161 +#: compensation/views/eco_account_views.py:167 msgid "Deduction removed" msgstr "Abbuchung entfernt" -#: compensation/views/eco_account_views.py:204 ema/views.py:170 -#: intervention/views.py:376 +#: compensation/views/eco_account_views.py:210 ema/views.py:171 +#: intervention/views.py:431 msgid "{} unrecorded" msgstr "{} entzeichnet" -#: compensation/views/eco_account_views.py:204 ema/views.py:170 -#: intervention/views.py:376 +#: compensation/views/eco_account_views.py:210 ema/views.py:171 +#: intervention/views.py:431 msgid "{} recorded" msgstr "{} verzeichnet" -#: compensation/views/eco_account_views.py:303 intervention/views.py:358 +#: compensation/views/eco_account_views.py:346 intervention/views.py:413 msgid "Deduction added" msgstr "Abbuchung hinzugefügt" @@ -732,7 +747,7 @@ msgstr "" msgid "Payment funded compensation" msgstr "Ersatzzahlungsmaßnahme" -#: ema/views.py:153 +#: ema/views.py:154 msgid "EMA removed" msgstr "EMA entfernt" @@ -839,7 +854,7 @@ msgid "Date of revocation" msgstr "Datum des Widerspruchs" #: intervention/forms.py:333 -#: intervention/templates/intervention/detail/includes/revocation.html:38 +#: intervention/templates/intervention/detail/includes/revocation.html:35 msgid "Document" msgstr "Dokument" @@ -852,20 +867,20 @@ msgstr "Muss kleiner als 15 Mb sein" msgid "Add revocation" msgstr "Widerspruch hinzufügen" -#: intervention/forms.py:400 +#: intervention/forms.py:399 msgid "Checked intervention data" msgstr "Eingriffsdaten geprüft" -#: intervention/forms.py:406 +#: intervention/forms.py:405 msgid "Checked compensations data and payments" msgstr "Kompensationen und Zahlungen geprüft" -#: intervention/forms.py:414 +#: intervention/forms.py:413 #: intervention/templates/intervention/detail/includes/controls.html:19 msgid "Run check" msgstr "Prüfung vornehmen" -#: intervention/forms.py:415 konova/forms.py:376 +#: intervention/forms.py:414 konova/forms.py:389 msgid "" "I, {} {}, confirm that all necessary control steps have been performed by " "myself." @@ -873,30 +888,30 @@ msgstr "" "Ich, {} {}, bestätige, dass die notwendigen Kontrollschritte durchgeführt " "wurden:" -#: intervention/forms.py:464 +#: intervention/forms.py:465 msgid "Only recorded accounts can be selected for deductions" msgstr "Nur verzeichnete Ökokonten können für Abbuchungen verwendet werden." -#: intervention/forms.py:483 intervention/forms.py:490 -#: intervention/tables.py:89 +#: intervention/forms.py:484 intervention/forms.py:491 +#: intervention/tables.py:88 #: intervention/templates/intervention/detail/view.html:19 #: konova/templates/konova/home.html:11 templates/navbar.html:22 msgid "Intervention" msgstr "Eingriff" -#: intervention/forms.py:485 +#: intervention/forms.py:486 msgid "Only shared interventions can be selected" msgstr "Nur freigegebene Eingriffe können gewählt werden" -#: intervention/forms.py:498 +#: intervention/forms.py:499 msgid "New Deduction" msgstr "Neue Abbuchung" -#: intervention/forms.py:499 +#: intervention/forms.py:500 msgid "Enter the information for a new deduction from a chosen eco-account" msgstr "Geben Sie die Informationen für eine neue Abbuchung ein." -#: intervention/forms.py:535 +#: intervention/forms.py:536 msgid "" "Eco-account {} is not recorded yet. You can only deduct from recorded " "accounts." @@ -904,7 +919,7 @@ msgstr "" "Ökokonto {} ist noch nicht verzeichnet. Abbuchungen können nur von " "verzeichneten Ökokonten erfolgen." -#: intervention/forms.py:548 +#: intervention/forms.py:549 msgid "" "The account {} has not enough surface for a deduction of {} m². There are " "only {} m² left" @@ -912,49 +927,50 @@ msgstr "" "Das Ökokonto {} hat für eine Abbuchung von {} m² nicht ausreichend " "Restfläche. Es stehen noch {} m² zur Verfügung." -#: intervention/models.py:200 +#: intervention/models.py:306 msgid "Registration office file number missing" msgstr "Aktenzeichen Zulassungsbehörde fehlt" -#: intervention/models.py:203 +#: intervention/models.py:309 msgid "Conversation office file number missing" msgstr "Aktenzeichen Naturschutzbehörde fehlt" -#: intervention/models.py:206 +#: intervention/models.py:312 msgid "Responsible data missing" msgstr "Daten zu Verantwortlichen fehlen" -#: intervention/models.py:220 +#: intervention/models.py:326 msgid "Revocation exists" msgstr "Widerspruch liegt vor" -#: intervention/models.py:223 +#: intervention/models.py:329 msgid "Registration date missing" msgstr "Datum Zulassung bzw. Satzungsbeschluss fehlt" -#: intervention/models.py:226 +#: intervention/models.py:332 msgid "Binding on missing" msgstr "Datum Bestandskraft fehlt" -#: intervention/models.py:228 +#: intervention/models.py:334 msgid "Legal data missing" msgstr "Rechtliche Daten fehlen" -#: intervention/tables.py:46 +#: intervention/tables.py:45 #: intervention/templates/intervention/detail/includes/revocation.html:8 +#: intervention/templates/intervention/detail/includes/revocation.html:55 #: intervention/templates/intervention/detail/view.html:99 msgid "Revocation" msgstr "Widerspruch" -#: intervention/tables.py:67 +#: intervention/tables.py:66 msgid "Interventions" msgstr "Eingriffe" -#: intervention/tables.py:177 +#: intervention/tables.py:176 msgid "No revocation" msgstr "Kein Widerspruch" -#: intervention/tables.py:183 +#: intervention/tables.py:182 msgid "Revocation from {}, added on {} by {}" msgstr "Widerspruch vom {}, am {} von {} hinzugefügt" @@ -966,6 +982,18 @@ msgstr "Neue Kompensation hinzufügen" msgid "Remove compensation" msgstr "Kompensation entfernen" +#: intervention/templates/intervention/detail/includes/deductions.html:28 +msgid "Account Identifier" +msgstr "Ökokonto Kennung" + +#: intervention/templates/intervention/detail/includes/deductions.html:43 +msgid "Eco-account deleted! Deduction invalid!" +msgstr "Ökokonto gelöscht! Abbuchung ungültig!" + +#: intervention/templates/intervention/detail/includes/deductions.html:43 +msgid "Eco-account not recorded! Deduction invalid!" +msgstr "Ökokonto nicht verzeichnet! Abbuchung ungültig!" + #: intervention/templates/intervention/detail/includes/payments.html:8 msgid "Payments" msgstr "Ersatzzahlungen" @@ -992,10 +1020,6 @@ msgstr "Vom" msgid "Remove revocation" msgstr "Widerspruch entfernen" -#: intervention/templates/intervention/detail/includes/deductions.html:28 -msgid "Account Identifier" -msgstr "Ökokonto Kennung" - #: intervention/templates/intervention/detail/view.html:35 msgid "Process type" msgstr "Verfahrenstyp" @@ -1020,19 +1044,19 @@ msgstr "Datum Bestandskraft" msgid "Exists" msgstr "vorhanden" -#: intervention/views.py:65 +#: intervention/views.py:66 msgid "Intervention {} added" msgstr "Eingriff {} hinzugefügt" -#: intervention/views.py:68 intervention/views.py:169 +#: intervention/views.py:69 intervention/views.py:224 msgid "Invalid input" msgstr "Eingabe fehlerhaft" -#: intervention/views.py:127 +#: intervention/views.py:182 msgid "This intervention has a revocation from {}" msgstr "Es existiert ein Widerspruch vom {}" -#: intervention/views.py:143 +#: intervention/views.py:198 msgid "" "Remember: This data has not been shared with you, yet. This means you can " "only read but can not edit or perform any actions like running a check or " @@ -1042,43 +1066,43 @@ msgstr "" "bedeutet, dass Sie nur lesenden Zugriff hierauf haben und weder bearbeiten, " "noch Prüfungen durchführen oder verzeichnen können." -#: intervention/views.py:166 +#: intervention/views.py:221 msgid "{} edited" msgstr "{} bearbeitet" -#: intervention/views.py:195 +#: intervention/views.py:250 msgid "{} removed" msgstr "{} entfernt" -#: intervention/views.py:216 +#: intervention/views.py:271 msgid "Revocation removed" msgstr "Widerspruch entfernt" -#: intervention/views.py:242 +#: intervention/views.py:297 msgid "{} has already been shared with you" msgstr "{} wurde bereits für Sie freigegeben" -#: intervention/views.py:247 +#: intervention/views.py:302 msgid "{} has been shared with you" msgstr "{} ist nun für Sie freigegeben" -#: intervention/views.py:254 +#: intervention/views.py:309 msgid "Share link invalid" msgstr "Freigabelink ungültig" -#: intervention/views.py:275 +#: intervention/views.py:330 msgid "Share settings updated" msgstr "Freigabe Einstellungen aktualisiert" -#: intervention/views.py:294 +#: intervention/views.py:349 msgid "Check performed" msgstr "Prüfung durchgeführt" -#: intervention/views.py:314 +#: intervention/views.py:369 msgid "Revocation added" msgstr "Widerspruch hinzugefügt" -#: intervention/views.py:381 +#: intervention/views.py:436 msgid "There are errors on this intervention:" msgstr "Es liegen Fehler in diesem Eingriff vor:" @@ -1136,27 +1160,27 @@ msgstr "Wann wurde diese Datei erstellt oder das Foto aufgenommen?" msgid "File" msgstr "Datei" -#: konova/forms.py:353 +#: konova/forms.py:366 msgid "Added document" msgstr "Dokument hinzugefügt" -#: konova/forms.py:367 +#: konova/forms.py:380 msgid "Confirm record" msgstr "Verzeichnen bestätigen" -#: konova/forms.py:375 +#: konova/forms.py:388 msgid "Record data" msgstr "Daten verzeichnen" -#: konova/forms.py:380 +#: konova/forms.py:395 msgid "Confirm unrecord" msgstr "Entzeichnen bestätigen" -#: konova/forms.py:381 +#: konova/forms.py:396 msgid "Unrecord data" msgstr "Daten entzeichnen" -#: konova/forms.py:382 +#: konova/forms.py:397 msgid "I, {} {}, confirm that this data must be unrecorded." msgstr "" "Ich, {} {}, bestätige, dass diese Daten wieder entzeichnet werden müssen." @@ -1185,19 +1209,19 @@ msgstr "Wenn meine freigegebenen Daten gelöscht wurden" msgid "On registered data edited" msgstr "Wenn meine freigegebenen Daten bearbeitet wurden" -#: konova/models.py:189 +#: konova/models.py:190 msgid "Finished" msgstr "Umgesetzt bis" -#: konova/models.py:190 +#: konova/models.py:191 msgid "Maintain" msgstr "Unterhaltung bis" -#: konova/models.py:191 +#: konova/models.py:192 msgid "Control" msgstr "Kontrolle am" -#: konova/models.py:192 +#: konova/models.py:193 msgid "Other" msgstr "Sonstige" @@ -1233,6 +1257,10 @@ msgstr "Anzeigen" msgid "Deduct" msgstr "Abbuchen" +#: konova/utils/documents.py:52 +msgid "Document '{}' deleted" +msgstr "Dokument '{}' gelöscht" + #: konova/utils/message_templates.py:11 msgid "There was an error on this form." msgstr "Es gab einen Fehler im Formular." @@ -1253,11 +1281,7 @@ msgstr "Schauen Sie rein" msgid "{} has been checked successfully by user {}! {}" msgstr "{} wurde erfolgreich vom Nutzer {} geprüft! {}" -#: konova/views.py:138 -msgid "Document '{}' deleted" -msgstr "Dokument '{}' gelöscht" - -#: konova/views.py:157 +#: konova/views.py:115 msgid "Deadline removed" msgstr "Frist gelöscht"