diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index d0695c4b7d..7247caa8d9 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -69,7 +69,7 @@ logger = logging.getLogger(__name__) # Read the autogenerated key-file key_file_name = os.path.join(BASE_DIR, 'secret_key.txt') -logger.info(f'Loading SERCRET_KEY from {key_file_name}') +logger.info(f'Loading SECRET_KEY from {key_file_name}') key_file = open(key_file_name, 'r') SECRET_KEY = key_file.read().strip() diff --git a/InvenTree/build/api.py b/InvenTree/build/api.py index 2401e9d936..ffc8d97a92 100644 --- a/InvenTree/build/api.py +++ b/InvenTree/build/api.py @@ -46,6 +46,8 @@ class BuildList(generics.ListCreateAPIView): queryset = super().get_queryset().prefetch_related('part') + queryset = BuildSerializer.annotate_queryset(queryset) + return queryset def filter_queryset(self, queryset): @@ -71,6 +73,17 @@ class BuildList(generics.ListCreateAPIView): else: queryset = queryset.exclude(status__in=BuildStatus.ACTIVE_CODES) + # Filter by "overdue" status? + overdue = params.get('overdue', None) + + if overdue is not None: + overdue = str2bool(overdue) + + if overdue: + queryset = queryset.filter(Build.OVERDUE_FILTER) + else: + queryset = queryset.exclude(Build.OVERDUE_FILTER) + # Filter by associated part? part = params.get('part', None) diff --git a/InvenTree/build/forms.py b/InvenTree/build/forms.py index ba7787798d..70deeef7b1 100644 --- a/InvenTree/build/forms.py +++ b/InvenTree/build/forms.py @@ -32,6 +32,14 @@ class EditBuildForm(HelperForm): 'reference': _('Build Order reference') } + # TODO: Make this a more "presentable" date picker + # TODO: Currently does not render super nicely with crispy forms + target_date = forms.DateField( + widget=forms.DateInput( + attrs={'type': 'date'} + ) + ) + class Meta: model = Build fields = [ @@ -40,6 +48,7 @@ class EditBuildForm(HelperForm): 'part', 'quantity', 'batch', + 'target_date', 'take_from', 'destination', 'parent', diff --git a/InvenTree/build/migrations/0025_build_target_date.py b/InvenTree/build/migrations/0025_build_target_date.py new file mode 100644 index 0000000000..e834d74d0f --- /dev/null +++ b/InvenTree/build/migrations/0025_build_target_date.py @@ -0,0 +1,18 @@ +# Generated by Django 3.0.7 on 2020-12-15 12:13 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('build', '0024_auto_20201201_1023'), + ] + + operations = [ + migrations.AddField( + model_name='build', + name='target_date', + field=models.DateField(blank=True, help_text='Target date for build completion. Build will be overdue after this date.', null=True, verbose_name='Target completion date'), + ), + ] diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py index 8616e11b2a..488a8b79e8 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -14,7 +14,7 @@ from django.core.exceptions import ValidationError from django.urls import reverse from django.db import models, transaction -from django.db.models import Sum +from django.db.models import Sum, Q from django.db.models.functions import Coalesce from django.core.validators import MinValueValidator @@ -47,11 +47,14 @@ class Build(MPTTModel): status: Build status code batch: Batch code transferred to build parts (optional) creation_date: Date the build was created (auto) - completion_date: Date the build was completed + target_date: Date the build will be overdue + completion_date: Date the build was completed (or, if incomplete, the expected date of completion) link: External URL for extra information notes: Text notes """ + OVERDUE_FILTER = Q(status__in=BuildStatus.ACTIVE_CODES) & ~Q(target_date=None) & Q(target_date__lte=datetime.now().date()) + class Meta: verbose_name = _("Build Order") verbose_name_plural = _("Build Orders") @@ -164,6 +167,12 @@ class Build(MPTTModel): creation_date = models.DateField(auto_now_add=True, editable=False) + target_date = models.DateField( + null=True, blank=True, + verbose_name=_('Target completion date'), + help_text=_('Target date for build completion. Build will be overdue after this date.') + ) + completion_date = models.DateField(null=True, blank=True) completed_by = models.ForeignKey( @@ -183,6 +192,22 @@ class Build(MPTTModel): blank=True, help_text=_('Extra build notes') ) + def is_overdue(self): + """ + Returns true if this build is "overdue": + + - Not completed + - Target date is "in the past" + """ + + # Cannot be deemed overdue if target_date is not set + if self.target_date is None: + return False + + today = datetime.now().date() + + return self.active and self.target_date < today + @property def active(self): """ diff --git a/InvenTree/build/serializers.py b/InvenTree/build/serializers.py index 4423619b8a..b71aaecc61 100644 --- a/InvenTree/build/serializers.py +++ b/InvenTree/build/serializers.py @@ -5,12 +5,17 @@ JSON serializers for Build API # -*- coding: utf-8 -*- from __future__ import unicode_literals +from django.db.models import Case, When, Value +from django.db.models import BooleanField + from rest_framework import serializers + from InvenTree.serializers import InvenTreeModelSerializer + from stock.serializers import StockItemSerializerBrief +from part.serializers import PartBriefSerializer from .models import Build, BuildItem -from part.serializers import PartBriefSerializer class BuildSerializer(InvenTreeModelSerializer): @@ -23,6 +28,33 @@ class BuildSerializer(InvenTreeModelSerializer): quantity = serializers.FloatField() + overdue = serializers.BooleanField() + + @staticmethod + def annotate_queryset(queryset): + """ + Add custom annotations to the BuildSerializer queryset, + performing database queries as efficiently as possible. + + The following annoted fields are added: + + - overdue: True if the build is outstanding *and* the completion date has past + + """ + + # Annotate a boolean 'overdue' flag + + queryset = queryset.annotate( + overdue=Case( + When( + Build.OVERDUE_FILTER, then=Value(True, output_field=BooleanField()), + ), + default=Value(False, output_field=BooleanField()) + ) + ) + + return queryset + def __init__(self, *args, **kwargs): part_detail = kwargs.pop('part_detail', False) @@ -42,11 +74,13 @@ class BuildSerializer(InvenTreeModelSerializer): 'completion_date', 'part', 'part_detail', + 'overdue', 'reference', 'sales_order', 'quantity', 'status', 'status_text', + 'target_date', 'notes', 'link', ] diff --git a/InvenTree/build/templates/build/build_base.html b/InvenTree/build/templates/build/build_base.html index 3a94398e87..1124dd16c0 100644 --- a/InvenTree/build/templates/build/build_base.html +++ b/InvenTree/build/templates/build/build_base.html @@ -37,7 +37,12 @@ src="{% static 'img/blank_image.png' %}" {% endif %} -

{% build_status_label build.status large=True %}

+

+ {% build_status_label build.status large=True %} + {% if build.is_overdue %} + {% trans "Overdue" %} + {% endif %} +


{{ build.title }}

@@ -81,7 +86,12 @@ src="{% static 'img/blank_image.png' %}" {% trans "Status" %} - {% build_status_label build.status %} + + {% build_status_label build.status %} + {% if build.is_overdue %} + {% trans "Overdue" %} + {% endif %} + diff --git a/InvenTree/build/templates/build/detail.html b/InvenTree/build/templates/build/detail.html index 68a842755d..a9a2288c4e 100644 --- a/InvenTree/build/templates/build/detail.html +++ b/InvenTree/build/templates/build/detail.html @@ -95,33 +95,26 @@ {% trans "Created" %} {{ build.creation_date }} - -
-
- - - - - - - - {% if build.completion_date %} - - - - - + + + + {% if build.target_date %} + + {% else %} + {% endif %} - + + + + + {% if build.completion_date %} + + {% else %} + + {% endif %} +
{% trans "BOM Price" %} - {% if bom_price %} - {{ bom_price }} - {% if build.part.has_complete_bom_pricing == False %} -
{% trans "BOM pricing is incomplete" %} - {% endif %} - {% else %} - {% trans "No pricing information" %} - {% endif %} -
{% trans "Completed" %}{{ build.completion_date }}{% if build.completed_by %}{{ build.completed_by }}{% endif %}
{% trans "Target Date" %} + {{ build.target_date }}{% if build.is_overdue %} {% endif %} + {% trans "No target date set" %}
{% trans "Completed" %}{{ build.completion_date }}{% if build.completed_by %}{{ build.completed_by }}{% endif %}{% trans "Build not complete" %}
diff --git a/InvenTree/build/views.py b/InvenTree/build/views.py index 1355738a9c..69d1dd9415 100644 --- a/InvenTree/build/views.py +++ b/InvenTree/build/views.py @@ -721,7 +721,7 @@ class BuildUpdate(AjaxUpdateView): model = Build form_class = forms.EditBuildForm context_object_name = 'build' - ajax_form_title = _('Edit Build Details') + ajax_form_title = _('Edit Build Order Details') ajax_template_name = 'modal_form.html' role_required = 'build.change' @@ -764,7 +764,7 @@ class BuildDelete(AjaxDeleteView): model = Build ajax_template_name = 'build/delete_build.html' - ajax_form_title = _('Delete Build') + ajax_form_title = _('Delete Build Order') role_required = 'build.delete' diff --git a/InvenTree/locale/de/LC_MESSAGES/django.mo b/InvenTree/locale/de/LC_MESSAGES/django.mo index 4d57b3c49d..b2a1691aac 100644 Binary files a/InvenTree/locale/de/LC_MESSAGES/django.mo and b/InvenTree/locale/de/LC_MESSAGES/django.mo differ diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po index e7f273efc2..5b18692564 100644 --- a/InvenTree/locale/de/LC_MESSAGES/django.po +++ b/InvenTree/locale/de/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-12 22:05+1100\n" +"POT-Creation-Date: 2020-12-16 19:08+1100\n" "PO-Revision-Date: 2020-05-03 11:32+0200\n" "Last-Translator: Christian Schlüter \n" "Language-Team: C \n" @@ -17,45 +17,46 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 19.12.0\n" -#: InvenTree/api.py:85 +#: InvenTree/api.py:90 msgid "No action specified" msgstr "Keine Aktion angegeben" -#: InvenTree/api.py:99 +#: InvenTree/api.py:104 msgid "No matching action found" msgstr "Keine passende Aktion gefunden" -#: InvenTree/forms.py:108 build/forms.py:82 build/forms.py:170 +#: InvenTree/forms.py:110 build/forms.py:91 build/forms.py:179 msgid "Confirm" msgstr "Bestätigen" -#: InvenTree/forms.py:124 +#: InvenTree/forms.py:126 #, fuzzy #| msgid "Confim BOM item deletion" msgid "Confirm item deletion" msgstr "Löschung von BOM-Position bestätigen" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 #, fuzzy #| msgid "Create new part" msgid "Enter new password" msgstr "Neues Teil anlegen" -#: InvenTree/forms.py:163 +#: InvenTree/forms.py:165 msgid "Confirm new password" msgstr "" -#: InvenTree/forms.py:198 +#: InvenTree/forms.py:200 msgid "Apply Theme" msgstr "" -#: InvenTree/forms.py:228 +#: InvenTree/forms.py:230 #, fuzzy #| msgid "Set Part Category" msgid "Select Category" msgstr "Teilkategorie auswählen" #: InvenTree/helpers.py:361 order/models.py:189 order/models.py:271 +#: stock/views.py:1646 msgid "Invalid quantity provided" msgstr "Keine gültige Menge" @@ -98,7 +99,7 @@ msgstr "Datei zum Anhängen auswählen" msgid "File comment" msgstr "Datei-Kommentar" -#: InvenTree/models.py:68 templates/js/stock.js:734 +#: InvenTree/models.py:68 templates/js/stock.js:738 msgid "User" msgstr "Benutzer" @@ -113,24 +114,34 @@ msgstr "Name" msgid "Description (optional)" msgstr "Firmenbeschreibung" -#: InvenTree/settings.py:354 +#: InvenTree/settings.py:422 msgid "English" msgstr "Englisch" -#: InvenTree/settings.py:355 +#: InvenTree/settings.py:423 msgid "German" msgstr "Deutsch" -#: InvenTree/settings.py:356 +#: InvenTree/settings.py:424 msgid "French" msgstr "Französisch" -#: InvenTree/settings.py:357 +#: InvenTree/settings.py:425 msgid "Polish" msgstr "Polnisch" +#: InvenTree/status.py:24 +msgid "Celery worker check failed" +msgstr "" + +#: InvenTree/status.py:27 +#, fuzzy +#| msgid "Instance Name" +msgid "InvenTree system health checks failed" +msgstr "Instanzname" + #: InvenTree/status_codes.py:94 InvenTree/status_codes.py:135 -#: InvenTree/status_codes.py:222 +#: InvenTree/status_codes.py:223 msgid "Pending" msgstr "Ausstehend" @@ -138,12 +149,12 @@ msgstr "Ausstehend" msgid "Placed" msgstr "Platziert" -#: InvenTree/status_codes.py:96 InvenTree/status_codes.py:225 +#: InvenTree/status_codes.py:96 InvenTree/status_codes.py:226 msgid "Complete" msgstr "Fertig" #: InvenTree/status_codes.py:97 InvenTree/status_codes.py:137 -#: InvenTree/status_codes.py:224 +#: InvenTree/status_codes.py:225 msgid "Cancelled" msgstr "Storniert" @@ -182,7 +193,7 @@ msgstr "Zerstört" msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:223 +#: InvenTree/status_codes.py:224 #, fuzzy #| msgid "Location" msgid "Production" @@ -224,37 +235,39 @@ msgstr "Überschuss darf 100% nicht überschreiten" msgid "Overage must be an integer value or a percentage" msgstr "Überschuss muss eine Ganzzahl oder ein Prozentwert sein" -#: InvenTree/views.py:494 +#: InvenTree/views.py:495 #, fuzzy #| msgid "Delete BOM Item" msgid "Delete Item" msgstr "BOM-Position löschen" -#: InvenTree/views.py:543 +#: InvenTree/views.py:544 #, fuzzy #| msgid "Confim BOM item deletion" msgid "Check box to confirm item deletion" msgstr "Löschung von BOM-Position bestätigen" -#: InvenTree/views.py:558 templates/InvenTree/settings/user.html:18 +#: InvenTree/views.py:559 templates/InvenTree/settings/user.html:18 #, fuzzy #| msgid "No user information" msgid "Edit User Information" msgstr "Keine Benutzerinformation" -#: InvenTree/views.py:569 templates/InvenTree/settings/user.html:22 +#: InvenTree/views.py:570 templates/InvenTree/settings/user.html:22 #, fuzzy #| msgid "Select part" msgid "Set Password" msgstr "Teil auswählen" -#: InvenTree/views.py:588 +#: InvenTree/views.py:589 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:794 -msgid "Database Statistics" -msgstr "Datenbankstatistiken" +#: InvenTree/views.py:795 templates/navbar.html:78 +#, fuzzy +#| msgid "No user information" +msgid "System Information" +msgstr "Keine Benutzerinformation" #: barcode/api.py:53 barcode/api.py:150 msgid "Must provide barcode_data parameter" @@ -306,9 +319,9 @@ msgstr "Neues Lagerobjekt hinzufügen" msgid "Build Order reference" msgstr "Bestell-Referenz" -#: build/forms.py:70 build/templates/build/auto_allocate.html:17 -#: build/templates/build/build_base.html:78 -#: build/templates/build/detail.html:29 common/models.py:488 +#: build/forms.py:79 build/templates/build/auto_allocate.html:17 +#: build/templates/build/build_base.html:83 +#: build/templates/build/detail.html:29 common/models.py:494 #: company/forms.py:112 company/templates/company/supplier_part_pricing.html:75 #: order/templates/order/order_wizard/select_parts.html:32 #: order/templates/order/purchase_order_detail.html:179 @@ -321,168 +334,168 @@ msgstr "Bestell-Referenz" #: stock/templates/stock/item_base.html:46 #: stock/templates/stock/item_base.html:197 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:338 -#: templates/js/bom.js:189 templates/js/build.js:404 templates/js/stock.js:725 -#: templates/js/stock.js:953 +#: templates/js/bom.js:195 templates/js/build.js:420 templates/js/stock.js:729 +#: templates/js/stock.js:957 msgid "Quantity" msgstr "Anzahl" -#: build/forms.py:71 +#: build/forms.py:80 #, fuzzy #| msgid "Serial number for this item" msgid "Enter quantity for build output" msgstr "Seriennummer für dieses Teil" -#: build/forms.py:75 stock/forms.py:111 +#: build/forms.py:84 stock/forms.py:111 #, fuzzy #| msgid "Serial Number" msgid "Serial numbers" msgstr "Seriennummer" -#: build/forms.py:77 +#: build/forms.py:86 #, fuzzy #| msgid "Serial number for this item" msgid "Enter serial numbers for build outputs" msgstr "Seriennummer für dieses Teil" -#: build/forms.py:83 +#: build/forms.py:92 #, fuzzy #| msgid "Confirm completion of build" msgid "Confirm creation of build outut" msgstr "Baufertigstellung bestätigen" -#: build/forms.py:103 +#: build/forms.py:112 #, fuzzy #| msgid "Confirm completion of build" msgid "Confirm deletion of build output" msgstr "Baufertigstellung bestätigen" -#: build/forms.py:124 +#: build/forms.py:133 #, fuzzy #| msgid "Confirm unallocation of build stock" msgid "Confirm unallocation of stock" msgstr "Zuweisungsaufhebung bestätigen" -#: build/forms.py:148 +#: build/forms.py:157 msgid "Confirm stock allocation" msgstr "Lagerbestandszuordnung bestätigen" -#: build/forms.py:171 +#: build/forms.py:180 #, fuzzy #| msgid "Mark order as complete" msgid "Mark build as complete" msgstr "Bestellung als vollständig markieren" -#: build/forms.py:195 +#: build/forms.py:204 #, fuzzy #| msgid "Location Details" msgid "Location of completed parts" msgstr "Standort-Details" -#: build/forms.py:200 +#: build/forms.py:209 #, fuzzy #| msgid "Confirm stock allocation" msgid "Confirm completion with incomplete stock allocation" msgstr "Lagerbestandszuordnung bestätigen" -#: build/forms.py:203 +#: build/forms.py:212 msgid "Confirm build completion" msgstr "Bau-Fertigstellung bestätigen" -#: build/forms.py:223 build/views.py:68 +#: build/forms.py:232 build/views.py:68 msgid "Confirm build cancellation" msgstr "Bauabbruch bestätigen" -#: build/forms.py:237 +#: build/forms.py:246 #, fuzzy #| msgid "Select stock item to allocate" msgid "Select quantity of stock to allocate" msgstr "Lagerobjekt für Zuordnung auswählen" -#: build/models.py:56 build/templates/build/build_base.html:8 +#: build/models.py:59 build/templates/build/build_base.html:8 #: build/templates/build/build_base.html:35 #: part/templates/part/allocation.html:20 msgid "Build Order" msgstr "Bauauftrag" -#: build/models.py:57 build/templates/build/index.html:6 +#: build/models.py:60 build/templates/build/index.html:6 #: build/templates/build/index.html:14 order/templates/order/so_builds.html:11 #: order/templates/order/so_tabs.html:9 part/templates/part/tabs.html:31 #: templates/InvenTree/settings/tabs.html:28 users/models.py:30 msgid "Build Orders" msgstr "Bauaufträge" -#: build/models.py:72 +#: build/models.py:75 #, fuzzy #| msgid "Order Reference" msgid "Build Order Reference" msgstr "Bestellreferenz" -#: build/models.py:73 order/templates/order/purchase_order_detail.html:174 -#: templates/js/bom.js:181 templates/js/build.js:493 +#: build/models.py:76 order/templates/order/purchase_order_detail.html:174 +#: templates/js/bom.js:187 templates/js/build.js:509 msgid "Reference" msgstr "Referenz" -#: build/models.py:80 build/templates/build/detail.html:19 +#: build/models.py:83 build/templates/build/detail.html:19 #: company/templates/company/detail.html:23 #: company/templates/company/supplier_part_base.html:61 #: company/templates/company/supplier_part_detail.html:27 #: order/templates/order/purchase_order_detail.html:161 #: part/templates/part/detail.html:51 part/templates/part/set_category.html:14 -#: templates/InvenTree/search.html:147 templates/js/bom.js:174 -#: templates/js/bom.js:499 templates/js/build.js:642 templates/js/company.js:56 -#: templates/js/order.js:168 templates/js/order.js:250 templates/js/part.js:188 +#: templates/InvenTree/search.html:147 templates/js/bom.js:180 +#: templates/js/bom.js:517 templates/js/build.js:664 templates/js/company.js:56 +#: templates/js/order.js:175 templates/js/order.js:257 templates/js/part.js:188 #: templates/js/part.js:271 templates/js/part.js:391 templates/js/part.js:572 -#: templates/js/stock.js:494 templates/js/stock.js:706 +#: templates/js/stock.js:494 templates/js/stock.js:710 msgid "Description" msgstr "Beschreibung" -#: build/models.py:83 +#: build/models.py:86 msgid "Brief description of the build" msgstr "Kurze Beschreibung des Baus" -#: build/models.py:91 build/templates/build/build_base.html:94 +#: build/models.py:95 build/templates/build/build_base.html:104 #: build/templates/build/detail.html:75 msgid "Parent Build" msgstr "Eltern-Bau" -#: build/models.py:92 +#: build/models.py:96 #, fuzzy #| msgid "SalesOrder to which this build is allocated" msgid "BuildOrder to which this build is allocated" msgstr "Bestellung, die diesem Bau zugwiesen ist" -#: build/models.py:97 build/templates/build/auto_allocate.html:16 -#: build/templates/build/build_base.html:73 +#: build/models.py:101 build/templates/build/auto_allocate.html:16 +#: build/templates/build/build_base.html:78 #: build/templates/build/detail.html:24 order/models.py:530 #: order/templates/order/order_wizard/select_parts.html:30 #: order/templates/order/purchase_order_detail.html:148 #: order/templates/order/receive_parts.html:19 part/models.py:315 #: part/templates/part/part_app_base.html:7 part/templates/part/related.html:26 #: part/templates/part/set_category.html:13 templates/InvenTree/search.html:133 -#: templates/js/barcode.js:336 templates/js/bom.js:147 templates/js/bom.js:484 -#: templates/js/build.js:647 templates/js/company.js:138 +#: templates/js/barcode.js:336 templates/js/bom.js:153 templates/js/bom.js:502 +#: templates/js/build.js:669 templates/js/company.js:138 #: templates/js/part.js:252 templates/js/part.js:357 templates/js/stock.js:468 -#: templates/js/stock.js:1025 +#: templates/js/stock.js:1029 msgid "Part" msgstr "Teil" -#: build/models.py:105 +#: build/models.py:109 msgid "Select part to build" msgstr "Teil für den Bau wählen" -#: build/models.py:110 +#: build/models.py:114 msgid "Sales Order Reference" msgstr "Bestellungsreferenz" -#: build/models.py:114 +#: build/models.py:118 msgid "SalesOrder to which this build is allocated" msgstr "Bestellung, die diesem Bau zugwiesen ist" -#: build/models.py:119 +#: build/models.py:123 msgid "Source Location" msgstr "Quell-Standort" -#: build/models.py:123 +#: build/models.py:127 msgid "" "Select location to take stock from for this build (leave blank to take from " "any stock location)" @@ -490,55 +503,64 @@ msgstr "" "Lager-Entnahmestandort für diesen Bau wählen (oder leer lassen für einen " "beliebigen Lager-Standort)" -#: build/models.py:128 +#: build/models.py:132 #, fuzzy #| msgid "Destination stock location" msgid "Destination Location" msgstr "Ziel-Lagerbestand" -#: build/models.py:132 +#: build/models.py:136 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:136 +#: build/models.py:140 msgid "Build Quantity" msgstr "Bau-Anzahl" -#: build/models.py:139 +#: build/models.py:143 #, fuzzy #| msgid "Number of parts to build" msgid "Number of stock items to build" msgstr "Anzahl der zu bauenden Teile" -#: build/models.py:143 +#: build/models.py:147 #, fuzzy #| msgid "Completed" msgid "Completed items" msgstr "Fertig" -#: build/models.py:145 +#: build/models.py:149 #, fuzzy #| msgid "Delete this Stock Item when stock is depleted" msgid "Number of stock items which have been completed" msgstr "Objekt löschen wenn Lagerbestand aufgebraucht" -#: build/models.py:149 part/templates/part/part_base.html:155 +#: build/models.py:153 part/templates/part/part_base.html:155 msgid "Build Status" msgstr "Bau-Status" -#: build/models.py:153 +#: build/models.py:157 msgid "Build status code" msgstr "Bau-Statuscode" -#: build/models.py:157 stock/models.py:390 +#: build/models.py:161 stock/models.py:390 msgid "Batch Code" msgstr "Losnummer" -#: build/models.py:161 +#: build/models.py:165 msgid "Batch code for this build output" msgstr "Chargennummer für diese Bau-Ausgabe" -#: build/models.py:176 build/templates/build/detail.html:89 +#: build/models.py:172 +msgid "Target completion date" +msgstr "" + +#: build/models.py:173 +msgid "" +"Target date for build completion. Build will be overdue after this date." +msgstr "" + +#: build/models.py:186 build/templates/build/detail.html:89 #: company/templates/company/supplier_part_base.html:68 #: company/templates/company/supplier_part_detail.html:24 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:102 @@ -546,95 +568,95 @@ msgstr "Chargennummer für diese Bau-Ausgabe" msgid "External Link" msgstr "Externer Link" -#: build/models.py:177 part/models.py:672 stock/models.py:386 +#: build/models.py:187 part/models.py:672 stock/models.py:386 msgid "Link to external URL" msgstr "Link zu einer externen URL" -#: build/models.py:181 build/templates/build/tabs.html:23 company/models.py:344 +#: build/models.py:191 build/templates/build/tabs.html:23 company/models.py:344 #: company/templates/company/tabs.html:33 order/templates/order/po_tabs.html:18 #: order/templates/order/purchase_order_detail.html:213 #: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:73 #: stock/forms.py:307 stock/forms.py:339 stock/forms.py:367 stock/models.py:448 -#: stock/models.py:1432 stock/templates/stock/tabs.html:26 -#: templates/js/barcode.js:391 templates/js/bom.js:250 -#: templates/js/stock.js:116 templates/js/stock.js:578 +#: stock/models.py:1433 stock/templates/stock/tabs.html:26 +#: templates/js/barcode.js:391 templates/js/bom.js:263 +#: templates/js/stock.js:116 templates/js/stock.js:582 msgid "Notes" msgstr "Notizen" -#: build/models.py:182 +#: build/models.py:192 msgid "Extra build notes" msgstr "Notizen für den Bau" -#: build/models.py:551 +#: build/models.py:577 #, fuzzy #| msgid "No action specified" msgid "No build output specified" msgstr "Keine Aktion angegeben" -#: build/models.py:554 +#: build/models.py:580 msgid "Build output is already completed" msgstr "" -#: build/models.py:557 +#: build/models.py:583 #, fuzzy #| msgid "Quantity does not match serial numbers" msgid "Build output does not match Build Order" msgstr "Anzahl stimmt nicht mit den Seriennummern überein" -#: build/models.py:632 +#: build/models.py:658 #, fuzzy #| msgid "Complete Build" msgid "Completed build output" msgstr "Bau fertigstellen" -#: build/models.py:870 +#: build/models.py:896 msgid "BuildItem must be unique for build, stock_item and install_into" msgstr "" -#: build/models.py:892 +#: build/models.py:918 #, fuzzy #| msgid "Allocate Stock to Build" msgid "Build item must specify a build output" msgstr "Lagerbestand dem Bau zuweisen" -#: build/models.py:897 +#: build/models.py:923 #, python-brace-format msgid "Selected stock item not found in BOM for part '{p}'" msgstr "Ausgewähltes Lagerobjekt nicht in BOM für Teil '{p}' gefunden" -#: build/models.py:901 +#: build/models.py:927 #, python-brace-format msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "" "zugewiesene Anzahl ({n}) darf nicht die verfügbare ({q}) Anzahl überschreiten" -#: build/models.py:908 order/models.py:614 +#: build/models.py:934 order/models.py:614 msgid "StockItem is over-allocated" msgstr "Zu viele Lagerobjekte zugewiesen" -#: build/models.py:912 order/models.py:617 +#: build/models.py:938 order/models.py:617 msgid "Allocation quantity must be greater than zero" msgstr "Anzahl muss größer null sein" -#: build/models.py:916 +#: build/models.py:942 msgid "Quantity must be 1 for serialized stock" msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein" -#: build/models.py:956 +#: build/models.py:982 msgid "Build to allocate parts" msgstr "Bau starten um Teile zuzuweisen" -#: build/models.py:963 +#: build/models.py:989 #, fuzzy #| msgid "Remove stock" msgid "Source stock item" msgstr "Bestand entfernen" -#: build/models.py:975 +#: build/models.py:1001 msgid "Stock quantity to allocate to build" msgstr "Lagerobjekt-Anzahl dem Bau zuweisen" -#: build/models.py:983 +#: build/models.py:1009 #, fuzzy #| msgid "Destination stock location" msgid "Destination stock item" @@ -676,7 +698,7 @@ msgstr "Teil bestellen" msgid "Order Parts" msgstr "Teile bestellen" -#: build/templates/build/allocate.html:33 templates/js/build.js:574 +#: build/templates/build/allocate.html:33 templates/js/build.js:590 #, fuzzy #| msgid "Unallocate Stock" msgid "Unallocate stock" @@ -723,7 +745,7 @@ msgstr "Lagerobjekt dem Bau zuweisen" #: stock/templates/stock/item_base.html:227 #: stock/templates/stock/stock_adjust.html:17 #: templates/InvenTree/search.html:183 templates/js/barcode.js:337 -#: templates/js/build.js:418 templates/js/stock.js:570 +#: templates/js/build.js:434 templates/js/stock.js:574 msgid "Location" msgstr "Standort" @@ -763,51 +785,60 @@ msgstr "Dieser Bau ist Kind von Bau" msgid "Admin view" msgstr "Admin" -#: build/templates/build/build_base.html:46 +#: build/templates/build/build_base.html:43 +#: build/templates/build/build_base.html:92 templates/js/table_filters.js:190 +msgid "Overdue" +msgstr "" + +#: build/templates/build/build_base.html:51 #, fuzzy #| msgid "Edited build" msgid "Edit Build" msgstr "Bau bearbeitet" -#: build/templates/build/build_base.html:50 +#: build/templates/build/build_base.html:55 msgid "Complete Build" msgstr "Bau fertigstellen" -#: build/templates/build/build_base.html:53 build/views.py:58 +#: build/templates/build/build_base.html:58 build/views.py:58 msgid "Cancel Build" msgstr "Bau abbrechen" -#: build/templates/build/build_base.html:59 build/views.py:767 +#: build/templates/build/build_base.html:64 msgid "Delete Build" msgstr "Bau entfernt" -#: build/templates/build/build_base.html:69 build/templates/build/detail.html:9 +#: build/templates/build/build_base.html:74 build/templates/build/detail.html:9 msgid "Build Details" msgstr "Bau-Status" -#: build/templates/build/build_base.html:83 +#: build/templates/build/build_base.html:88 #: build/templates/build/detail.html:57 #: order/templates/order/receive_parts.html:24 #: stock/templates/stock/item_base.html:312 templates/InvenTree/search.html:175 -#: templates/js/barcode.js:42 templates/js/build.js:675 -#: templates/js/order.js:173 templates/js/order.js:255 -#: templates/js/stock.js:557 templates/js/stock.js:961 +#: templates/js/barcode.js:42 templates/js/build.js:697 +#: templates/js/order.js:180 templates/js/order.js:262 +#: templates/js/stock.js:561 templates/js/stock.js:965 msgid "Status" msgstr "Status" -#: build/templates/build/build_base.html:88 +#: build/templates/build/build_base.html:92 +msgid "This build was due on" +msgstr "" + +#: build/templates/build/build_base.html:98 #: build/templates/build/detail.html:62 msgid "Progress" msgstr "" -#: build/templates/build/build_base.html:101 +#: build/templates/build/build_base.html:111 #: build/templates/build/detail.html:82 order/models.py:528 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:33 #: order/templates/order/sales_order_notes.html:10 #: order/templates/order/sales_order_ship.html:25 #: part/templates/part/allocation.html:27 -#: stock/templates/stock/item_base.html:221 templates/js/order.js:222 +#: stock/templates/stock/item_base.html:221 templates/js/order.js:229 msgid "Sales Order" msgstr "Bestellung" @@ -941,35 +972,41 @@ msgid "Destination location not specified" msgstr "Hat dieses Teil Tracking für einzelne Objekte?" #: build/templates/build/detail.html:68 -#: stock/templates/stock/item_base.html:245 templates/js/stock.js:565 -#: templates/js/stock.js:968 templates/js/table_filters.js:80 +#: stock/templates/stock/item_base.html:245 templates/js/stock.js:569 +#: templates/js/stock.js:972 templates/js/table_filters.js:80 #: templates/js/table_filters.js:151 msgid "Batch" msgstr "Los" #: build/templates/build/detail.html:95 #: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:100 templates/js/build.js:683 +#: order/templates/order/sales_order_base.html:100 templates/js/build.js:705 msgid "Created" msgstr "Erstellt" -#: build/templates/build/detail.html:105 -msgid "BOM Price" -msgstr "Stücklistenpreis" +#: build/templates/build/detail.html:100 templates/js/build.js:710 +#, fuzzy +#| msgid "Shipment Date" +msgid "Target Date" +msgstr "Versanddatum" -#: build/templates/build/detail.html:110 -msgid "BOM pricing is incomplete" -msgstr "Stücklistenbepreisung ist unvollständig" +#: build/templates/build/detail.html:106 +#, fuzzy +#| msgid "No destination set" +msgid "No target date set" +msgstr "Kein Ziel gesetzt" -#: build/templates/build/detail.html:113 -msgid "No pricing information" -msgstr "Keine Preisinformation" - -#: build/templates/build/detail.html:120 templates/js/build.js:661 -#: templates/js/build.js:688 +#: build/templates/build/detail.html:111 templates/js/build.js:683 +#: templates/js/build.js:715 msgid "Completed" msgstr "Fertig" +#: build/templates/build/detail.html:115 +#, fuzzy +#| msgid "Build order allocation is complete" +msgid "Build not complete" +msgstr "Bau-Zuweisung ist vollständig" + #: build/templates/build/edit_build_item.html:7 #, fuzzy #| msgid "Stock quantity to allocate to build" @@ -1046,7 +1083,7 @@ msgstr "Lagerbestand dem Bau zuweisen" msgid "Create Build Output" msgstr "Bau-Ausgabe" -#: build/views.py:207 stock/models.py:827 stock/views.py:1660 +#: build/views.py:207 stock/models.py:828 stock/views.py:1667 #, fuzzy #| msgid "Serial numbers already exist: " msgid "Serial numbers already exist" @@ -1131,13 +1168,21 @@ msgid "Created new build" msgstr "Neuen Bau angelegt" #: build/views.py:724 -msgid "Edit Build Details" +#, fuzzy +#| msgid "Edit Build Details" +msgid "Edit Build Order Details" msgstr "Baudetails bearbeiten" #: build/views.py:758 msgid "Edited build" msgstr "Bau bearbeitet" +#: build/views.py:767 +#, fuzzy +#| msgid "Complete Build" +msgid "Delete Build Order" +msgstr "Bau fertigstellen" + #: build/views.py:784 msgid "Removed parts from build allocation" msgstr "Teile von Bauzuordnung entfernt" @@ -1160,8 +1205,8 @@ msgstr "Dieses Lagerobjekt ist dem Bau zugewiesen" msgid "Stock item is over-allocated" msgstr "Zu viele Lagerobjekte zugewiesen" -#: build/views.py:847 templates/js/bom.js:215 templates/js/build.js:503 -#: templates/js/build.js:731 +#: build/views.py:847 templates/js/bom.js:221 templates/js/build.js:519 +#: templates/js/build.js:758 msgid "Available" msgstr "verfügbar" @@ -1299,7 +1344,7 @@ msgid "Copy category parameter templates when creating a part" msgstr "" #: common/models.py:115 part/models.py:743 part/templates/part/detail.html:168 -#: templates/js/table_filters.js:264 +#: templates/js/table_filters.js:268 msgid "Component" msgstr "Komponente" @@ -1318,7 +1363,7 @@ msgid "Parts are purchaseable by default" msgstr "" #: common/models.py:129 part/models.py:759 part/templates/part/detail.html:198 -#: templates/js/table_filters.js:272 +#: templates/js/table_filters.js:276 msgid "Salable" msgstr "Verkäuflich" @@ -1327,7 +1372,7 @@ msgid "Parts are salable by default" msgstr "" #: common/models.py:136 part/models.py:749 part/templates/part/detail.html:178 -#: templates/js/table_filters.js:31 templates/js/table_filters.js:276 +#: templates/js/table_filters.js:31 templates/js/table_filters.js:280 msgid "Trackable" msgstr "nachverfolgbar" @@ -1381,42 +1426,42 @@ msgstr "Bestell-Referenz" msgid "Prefix value for purchase order reference" msgstr "Bestell-Referenz" -#: common/models.py:373 +#: common/models.py:376 msgid "Settings key (must be unique - case insensitive" msgstr "" "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird " "nicht beachtet)" -#: common/models.py:375 +#: common/models.py:378 msgid "Settings value" msgstr "Einstellungs-Wert" -#: common/models.py:431 +#: common/models.py:437 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:445 +#: common/models.py:451 msgid "Key string must be unique" msgstr "Schlüsseltext muss eindeutig sein" -#: common/models.py:489 company/forms.py:113 +#: common/models.py:495 company/forms.py:113 #, fuzzy #| msgid "Price Breaks" msgid "Price break quantity" msgstr "Preisstaffelung" -#: common/models.py:497 company/templates/company/supplier_part_pricing.html:80 -#: part/templates/part/sale_prices.html:87 templates/js/bom.js:234 +#: common/models.py:503 company/templates/company/supplier_part_pricing.html:80 +#: part/templates/part/sale_prices.html:87 templates/js/bom.js:246 msgid "Price" msgstr "Preis" -#: common/models.py:498 +#: common/models.py:504 #, fuzzy #| msgid "Enter a valid quantity" msgid "Unit price at specified quantity" msgstr "Bitte eine gültige Anzahl eingeben" -#: common/models.py:521 +#: common/models.py:527 #, fuzzy #| msgid "Default Location" msgid "Default" @@ -1434,6 +1479,16 @@ msgstr "Währungs-Wert" msgid "Change Setting" msgstr "Einstellungen" +#: common/views.py:94 +msgid "Supplied value is not allowed" +msgstr "" + +#: common/views.py:103 +#, fuzzy +#| msgid "Supplier part description" +msgid "Supplied value must be a boolean" +msgstr "Zuliefererbeschreibung des Teils" + #: company/forms.py:37 company/models.py:139 #, fuzzy #| msgid "Do you purchase items from this company?" @@ -1569,7 +1624,7 @@ msgid "Part packaging" msgstr "Teile-Packaging" #: company/templates/company/assigned_stock.html:9 -#: company/templates/company/tabs.html:25 templates/js/build.js:395 +#: company/templates/company/tabs.html:25 templates/js/build.js:411 #, fuzzy #| msgid "Assigned" msgid "Assigned Stock" @@ -1620,14 +1675,14 @@ msgstr "Hersteller" #: order/templates/order/order_base.html:79 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:170 #: stock/templates/stock/item_base.html:287 templates/js/company.js:48 -#: templates/js/company.js:164 templates/js/order.js:155 +#: templates/js/company.js:164 templates/js/order.js:162 msgid "Supplier" msgstr "Zulieferer" #: company/templates/company/detail.html:62 #: order/templates/order/sales_order_base.html:81 stock/models.py:373 #: stock/models.py:374 stock/templates/stock/item_base.html:204 -#: templates/js/company.js:40 templates/js/order.js:237 +#: templates/js/company.js:40 templates/js/order.js:244 msgid "Customer" msgstr "Kunde" @@ -1642,7 +1697,7 @@ msgstr "Neues Zuliefererteil anlegen" #: company/templates/company/detail_part.html:18 #: order/templates/order/purchase_order_detail.html:68 -#: part/templates/part/supplier.html:14 templates/js/stock.js:845 +#: part/templates/part/supplier.html:14 templates/js/stock.js:849 msgid "New Supplier Part" msgstr "Neues Zulieferer-Teil" @@ -1670,7 +1725,7 @@ msgid "Delete Parts" msgstr "Teile löschen" #: company/templates/company/detail_part.html:63 -#: part/templates/part/category.html:116 templates/js/stock.js:839 +#: part/templates/part/category.html:116 templates/js/stock.js:843 msgid "New Part" msgstr "Neues Teil" @@ -1820,8 +1875,8 @@ msgstr "Teil bestellen" msgid "Pricing Information" msgstr "Preisinformationen ansehen" -#: company/templates/company/supplier_part_pricing.html:17 company/views.py:459 -#: part/templates/part/sale_prices.html:14 part/views.py:2546 +#: company/templates/company/supplier_part_pricing.html:17 company/views.py:486 +#: part/templates/part/sale_prices.html:14 part/views.py:2555 msgid "Add Price Break" msgstr "Preisstaffel hinzufügen" @@ -1872,7 +1927,7 @@ msgstr "Bestellungen" #: part/templates/part/cat_link.html:7 part/templates/part/category.html:94 #: part/templates/part/category_tabs.html:6 #: templates/InvenTree/settings/tabs.html:22 templates/navbar.html:19 -#: templates/stats.html:8 templates/stats.html:17 users/models.py:28 +#: templates/stats.html:35 templates/stats.html:44 users/models.py:28 msgid "Parts" msgstr "Teile" @@ -1941,25 +1996,25 @@ msgstr "Firma gelöscht" msgid "Edit Supplier Part" msgstr "Zuliefererteil bearbeiten" -#: company/views.py:289 templates/js/stock.js:846 +#: company/views.py:295 templates/js/stock.js:850 msgid "Create new Supplier Part" msgstr "Neues Zuliefererteil anlegen" -#: company/views.py:388 +#: company/views.py:415 msgid "Delete Supplier Part" msgstr "Zuliefererteil entfernen" -#: company/views.py:465 part/views.py:2552 +#: company/views.py:492 part/views.py:2561 #, fuzzy #| msgid "Add Price Break" msgid "Added new price break" msgstr "Preisstaffel hinzufügen" -#: company/views.py:521 part/views.py:2596 +#: company/views.py:548 part/views.py:2605 msgid "Edit Price Break" msgstr "Preisstaffel bearbeiten" -#: company/views.py:537 part/views.py:2612 +#: company/views.py:564 part/views.py:2621 msgid "Delete Price Break" msgstr "Preisstaffel löschen" @@ -2064,8 +2119,8 @@ msgstr "" msgid "Date order was completed" msgstr "Bestellung als vollständig markieren" -#: order/models.py:187 order/models.py:269 part/views.py:1496 -#: stock/models.py:244 stock/models.py:811 +#: order/models.py:187 order/models.py:269 part/views.py:1494 +#: stock/models.py:244 stock/models.py:812 msgid "Quantity must be greater than zero" msgstr "Anzahl muss größer Null sein" @@ -2103,7 +2158,7 @@ msgstr "Position - Notizen" #: order/models.py:486 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:24 -#: stock/templates/stock/item_base.html:259 templates/js/order.js:139 +#: stock/templates/stock/item_base.html:259 templates/js/order.js:146 msgid "Purchase Order" msgstr "Kaufvertrag" @@ -2115,7 +2170,7 @@ msgstr "Zulieferer-Teil" msgid "Number of items received" msgstr "Empfangene Objekt-Anzahl" -#: order/models.py:509 stock/models.py:457 +#: order/models.py:509 stock/models.py:458 #: stock/templates/stock/item_base.html:266 #, fuzzy #| msgid "Purchase Order" @@ -2188,7 +2243,7 @@ msgstr "Bestellreferenz" msgid "Order Status" msgstr "Bestellstatus" -#: order/templates/order/order_base.html:85 templates/js/order.js:162 +#: order/templates/order/order_base.html:85 templates/js/order.js:169 msgid "Supplier Reference" msgstr "Zuliefererreferenz" @@ -2221,11 +2276,15 @@ msgid "Step 1 of 2 - Select Part Suppliers" msgstr "Schritt 1 von 2 - Zulieferer auswählen" #: order/templates/order/order_wizard/select_parts.html:14 -msgid "Select suppliers." +#, fuzzy +#| msgid "Select suppliers." +msgid "Select suppliers" msgstr "Zulieferer auswählen." #: order/templates/order/order_wizard/select_parts.html:18 -msgid "No purchaseable parts selected." +#, fuzzy +#| msgid "No purchaseable parts selected." +msgid "No purchaseable parts selected" msgstr "Keine kaufbaren Teile ausgewählt." #: order/templates/order/order_wizard/select_parts.html:31 @@ -2245,7 +2304,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "Bestellungen auswählen oder anlegen." #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/order.js:186 templates/js/order.js:273 +#: templates/js/order.js:193 templates/js/order.js:280 msgid "Items" msgstr "Positionen" @@ -2287,7 +2346,7 @@ msgstr "Bestellpositionen" #: order/templates/order/purchase_order_detail.html:39 #: order/templates/order/purchase_order_detail.html:119 #: part/templates/part/category.html:173 part/templates/part/category.html:215 -#: templates/js/stock.js:851 +#: templates/js/stock.js:855 msgid "New Location" msgstr "Neuer Standort" @@ -2360,7 +2419,7 @@ msgstr "Packliste" msgid "Sales Order Details" msgstr "Auftragsdetails" -#: order/templates/order/sales_order_base.html:87 templates/js/order.js:244 +#: order/templates/order/sales_order_base.html:87 templates/js/order.js:251 msgid "Customer Reference" msgstr "Kundenreferenz" @@ -2377,23 +2436,23 @@ msgstr "Auftragspositionen" #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:154 stock/models.py:378 -#: stock/templates/stock/item_base.html:191 templates/js/build.js:402 +#: stock/templates/stock/item_base.html:191 templates/js/build.js:418 msgid "Serial Number" msgstr "Seriennummer" -#: order/templates/order/sales_order_detail.html:96 templates/js/build.js:443 -#: templates/js/build.js:742 +#: order/templates/order/sales_order_detail.html:96 templates/js/build.js:459 +#: templates/js/build.js:769 msgid "Edit stock allocation" msgstr "Lagerobjekt-Standort bearbeiten" -#: order/templates/order/sales_order_detail.html:97 templates/js/build.js:445 -#: templates/js/build.js:743 +#: order/templates/order/sales_order_detail.html:97 templates/js/build.js:461 +#: templates/js/build.js:770 msgid "Delete stock allocation" msgstr "Zuweisung löschen" #: order/templates/order/sales_order_detail.html:225 -#: part/templates/part/tabs.html:23 templates/js/build.js:507 -#: templates/js/build.js:738 +#: part/templates/part/tabs.html:23 templates/js/build.js:523 +#: templates/js/build.js:765 msgid "Allocated" msgstr "Zugeordnet" @@ -2681,7 +2740,7 @@ msgstr "Neues Zulieferer-Teil" msgid "Include part supplier data in exported BOM" msgstr "" -#: part/forms.py:92 part/models.py:1715 +#: part/forms.py:92 part/models.py:1717 msgid "Parent Part" msgstr "Ausgangsteil" @@ -2783,13 +2842,13 @@ msgstr "Standard-Standort für Teile dieser Kategorie" msgid "Default keywords for parts in this category" msgstr "Standard-Stichworte für Teile dieser Kategorie" -#: part/models.py:77 part/models.py:1760 +#: part/models.py:77 part/models.py:1762 #: part/templates/part/part_app_base.html:9 msgid "Part Category" msgstr "Teilkategorie" #: part/models.py:78 part/templates/part/category.html:18 -#: part/templates/part/category.html:89 templates/stats.html:12 +#: part/templates/part/category.html:89 templates/stats.html:39 msgid "Part Categories" msgstr "Teile-Kategorien" @@ -2871,7 +2930,7 @@ msgid "Stock keeping units for this part" msgstr "Stock Keeping Units (SKU) für dieses Teil" #: part/models.py:737 part/templates/part/detail.html:158 -#: templates/js/table_filters.js:260 +#: templates/js/table_filters.js:264 msgid "Assembly" msgstr "Baugruppe" @@ -2897,7 +2956,7 @@ msgstr "Kann dieses Teil an Kunden verkauft werden?" #: part/models.py:764 part/templates/part/detail.html:215 #: templates/js/table_filters.js:19 templates/js/table_filters.js:55 -#: templates/js/table_filters.js:186 templates/js/table_filters.js:243 +#: templates/js/table_filters.js:186 templates/js/table_filters.js:247 msgid "Active" msgstr "Aktiv" @@ -2922,13 +2981,13 @@ msgstr "Bemerkungen - unterstüzt Markdown-Formatierung" msgid "Stored BOM checksum" msgstr "Prüfsumme der Stückliste gespeichert" -#: part/models.py:1588 +#: part/models.py:1590 #, fuzzy #| msgid "Stock item cannot be created for a template Part" msgid "Test templates can only be created for trackable parts" msgstr "Lagerobjekt kann nicht für Vorlagen-Teile angelegt werden" -#: part/models.py:1605 +#: part/models.py:1607 #, fuzzy #| msgid "" #| "A stock item with this serial number already exists for template part " @@ -2938,140 +2997,146 @@ msgstr "" "Ein Teil mit dieser Seriennummer existiert bereits für die Teilevorlage " "{part}" -#: part/models.py:1624 templates/js/part.js:567 templates/js/stock.js:92 +#: part/models.py:1626 templates/js/part.js:567 templates/js/stock.js:92 #, fuzzy #| msgid "Instance Name" msgid "Test Name" msgstr "Instanzname" -#: part/models.py:1625 +#: part/models.py:1627 #, fuzzy #| msgid "Serial number for this item" msgid "Enter a name for the test" msgstr "Seriennummer für dieses Teil" -#: part/models.py:1630 +#: part/models.py:1632 #, fuzzy #| msgid "Description" msgid "Test Description" msgstr "Beschreibung" -#: part/models.py:1631 +#: part/models.py:1633 #, fuzzy #| msgid "Brief description of the build" msgid "Enter description for this test" msgstr "Kurze Beschreibung des Baus" -#: part/models.py:1636 templates/js/part.js:576 +#: part/models.py:1638 templates/js/part.js:576 #: templates/js/table_filters.js:172 msgid "Required" msgstr "benötigt" -#: part/models.py:1637 +#: part/models.py:1639 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:1642 templates/js/part.js:584 +#: part/models.py:1644 templates/js/part.js:584 #, fuzzy #| msgid "Required Parts" msgid "Requires Value" msgstr "benötigte Teile" -#: part/models.py:1643 +#: part/models.py:1645 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:1648 templates/js/part.js:591 +#: part/models.py:1650 templates/js/part.js:591 #, fuzzy #| msgid "Delete Attachment" msgid "Requires Attachment" msgstr "Anhang löschen" -#: part/models.py:1649 +#: part/models.py:1651 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:1682 +#: part/models.py:1684 msgid "Parameter template name must be unique" msgstr "Vorlagen-Name des Parameters muss eindeutig sein" -#: part/models.py:1687 +#: part/models.py:1689 msgid "Parameter Name" msgstr "Name des Parameters" -#: part/models.py:1689 +#: part/models.py:1691 msgid "Parameter Units" msgstr "Parameter Einheit" -#: part/models.py:1717 part/models.py:1765 +#: part/models.py:1719 part/models.py:1767 #: templates/InvenTree/settings/category.html:62 msgid "Parameter Template" msgstr "Parameter Vorlage" -#: part/models.py:1719 +#: part/models.py:1721 msgid "Parameter Value" msgstr "Parameter Wert" -#: part/models.py:1769 +#: part/models.py:1771 #, fuzzy #| msgid "Parameter Value" msgid "Default Parameter Value" msgstr "Parameter Wert" -#: part/models.py:1799 +#: part/models.py:1801 msgid "Select parent part" msgstr "Ausgangsteil auswählen" -#: part/models.py:1807 +#: part/models.py:1809 msgid "Select part to be used in BOM" msgstr "Teil für die Nutzung in der Stückliste auswählen" -#: part/models.py:1813 +#: part/models.py:1815 msgid "BOM quantity for this BOM item" msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil" -#: part/models.py:1815 +#: part/models.py:1817 #, fuzzy #| msgid "Confim BOM item deletion" msgid "This BOM item is optional" msgstr "Löschung von BOM-Position bestätigen" -#: part/models.py:1818 +#: part/models.py:1820 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Geschätzter Ausschuss (absolut oder prozentual)" -#: part/models.py:1821 +#: part/models.py:1823 msgid "BOM item reference" msgstr "Referenz des Objekts auf der Stückliste" -#: part/models.py:1824 +#: part/models.py:1826 msgid "BOM item notes" msgstr "Notizen zum Stücklisten-Objekt" -#: part/models.py:1826 +#: part/models.py:1828 msgid "BOM line checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:1893 part/views.py:1502 part/views.py:1554 +#: part/models.py:1899 part/views.py:1500 part/views.py:1552 #: stock/models.py:234 #, fuzzy #| msgid "Overage must be an integer value or a percentage" msgid "Quantity must be integer value for trackable parts" msgstr "Überschuss muss eine Ganzzahl oder ein Prozentwert sein" -#: part/models.py:1909 +#: part/models.py:1908 part/models.py:1910 +#, fuzzy +#| msgid "Supplier part description" +msgid "Sub part must be specified" +msgstr "Zuliefererbeschreibung des Teils" + +#: part/models.py:1913 #, fuzzy #| msgid "New BOM Item" msgid "BOM Item" msgstr "Neue Stücklistenposition" -#: part/models.py:2024 +#: part/models.py:2028 #, fuzzy #| msgid "Select a part" msgid "Select Related Part" msgstr "Teil auswählen" -#: part/models.py:2056 +#: part/models.py:2060 msgid "" "Error creating relationship: check that the part is not related to itself " "and that the relationship is unique" @@ -3093,8 +3158,8 @@ msgstr "Bestellung" #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:72 #: stock/templates/stock/item_base.html:274 -#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:724 -#: templates/js/stock.js:695 templates/js/stock.js:944 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:751 +#: templates/js/stock.js:699 templates/js/stock.js:948 msgid "Stock Item" msgstr "Lagerobjekt" @@ -3167,7 +3232,7 @@ msgstr "Stückliste validieren" msgid "Validate" msgstr "BOM validieren" -#: part/templates/part/bom.html:62 part/views.py:1793 +#: part/templates/part/bom.html:62 part/views.py:1791 msgid "Export Bill of Materials" msgstr "Stückliste exportieren" @@ -3221,6 +3286,12 @@ msgstr "" msgid "Match Fields" msgstr "" +#: part/templates/part/bom_upload/select_fields.html:62 +#, fuzzy +#| msgid "Duplicate part selected" +msgid "Duplicate column selection" +msgstr "Teil doppelt ausgewählt" + #: part/templates/part/bom_upload/select_parts.html:10 #, fuzzy #| msgid "Step 1 of 2 - Select Part Suppliers" @@ -3289,7 +3360,7 @@ msgstr "Neuen Bau beginnen" msgid "All parts" msgstr "Alle Teile" -#: part/templates/part/category.html:24 part/views.py:2184 +#: part/templates/part/category.html:24 part/views.py:2182 msgid "Create new part category" msgstr "Teilkategorie anlegen" @@ -3379,7 +3450,7 @@ msgstr "Teilkategorie anlegen" msgid "Create new Part Category" msgstr "Teilkategorie anlegen" -#: part/templates/part/category.html:216 stock/views.py:1342 +#: part/templates/part/category.html:216 stock/views.py:1358 msgid "Create new Stock Location" msgstr "Neuen Lager-Standort erstellen" @@ -3451,7 +3522,7 @@ msgstr "Einheiten" msgid "Minimum Stock" msgstr "Minimaler Lagerbestand" -#: part/templates/part/detail.html:114 templates/js/order.js:263 +#: part/templates/part/detail.html:114 templates/js/order.js:270 msgid "Creation Date" msgstr "Erstelldatum" @@ -3472,7 +3543,7 @@ msgid "Part is not a virtual part" msgstr "Teil ist nicht virtuell" #: part/templates/part/detail.html:148 stock/forms.py:249 -#: templates/js/table_filters.js:23 templates/js/table_filters.js:248 +#: templates/js/table_filters.js:23 templates/js/table_filters.js:252 msgid "Template" msgstr "Vorlage" @@ -3554,7 +3625,7 @@ msgstr "Parameter hinzufügen" msgid "New Parameter" msgstr "Neuer Parameter" -#: part/templates/part/params.html:25 stock/models.py:1419 +#: part/templates/part/params.html:25 stock/models.py:1420 #: templates/js/stock.js:112 msgid "Value" msgstr "Wert" @@ -3725,7 +3796,7 @@ msgstr "Teil entfernen" msgid "Part Stock" msgstr "Teilbestand" -#: part/templates/part/stock_count.html:7 templates/js/bom.js:224 +#: part/templates/part/stock_count.html:7 templates/js/bom.js:230 #: templates/js/part.js:442 msgid "No Stock" msgstr "Kein Bestand" @@ -3885,7 +3956,7 @@ msgstr "Teil kopiert" msgid "Possible matches exist - confirm creation of new part" msgstr "" -#: part/views.py:592 templates/js/stock.js:840 +#: part/views.py:592 templates/js/stock.js:844 msgid "Create New Part" msgstr "Neues Teil anlegen" @@ -3949,109 +4020,109 @@ msgstr "Stückliste validieren" msgid "No BOM file provided" msgstr "Keine Stückliste angegeben" -#: part/views.py:1505 +#: part/views.py:1503 msgid "Enter a valid quantity" msgstr "Bitte eine gültige Anzahl eingeben" -#: part/views.py:1530 part/views.py:1533 +#: part/views.py:1528 part/views.py:1531 msgid "Select valid part" msgstr "Bitte ein gültiges Teil auswählen" -#: part/views.py:1539 +#: part/views.py:1537 msgid "Duplicate part selected" msgstr "Teil doppelt ausgewählt" -#: part/views.py:1577 +#: part/views.py:1575 msgid "Select a part" msgstr "Teil auswählen" -#: part/views.py:1583 +#: part/views.py:1581 #, fuzzy #| msgid "Select part to be used in BOM" msgid "Selected part creates a circular BOM" msgstr "Teil für die Nutzung in der Stückliste auswählen" -#: part/views.py:1587 +#: part/views.py:1585 msgid "Specify quantity" msgstr "Anzahl angeben" -#: part/views.py:1843 +#: part/views.py:1841 msgid "Confirm Part Deletion" msgstr "Löschen des Teils bestätigen" -#: part/views.py:1852 +#: part/views.py:1850 msgid "Part was deleted" msgstr "Teil wurde gelöscht" -#: part/views.py:1861 +#: part/views.py:1859 msgid "Part Pricing" msgstr "Teilbepreisung" -#: part/views.py:1975 +#: part/views.py:1973 msgid "Create Part Parameter Template" msgstr "Teilparametervorlage anlegen" -#: part/views.py:1985 +#: part/views.py:1983 msgid "Edit Part Parameter Template" msgstr "Teilparametervorlage bearbeiten" -#: part/views.py:1994 +#: part/views.py:1992 msgid "Delete Part Parameter Template" msgstr "Teilparametervorlage löschen" -#: part/views.py:2004 +#: part/views.py:2002 msgid "Create Part Parameter" msgstr "Teilparameter anlegen" -#: part/views.py:2056 +#: part/views.py:2054 msgid "Edit Part Parameter" msgstr "Teilparameter bearbeiten" -#: part/views.py:2072 +#: part/views.py:2070 msgid "Delete Part Parameter" msgstr "Teilparameter löschen" -#: part/views.py:2131 +#: part/views.py:2129 msgid "Edit Part Category" msgstr "Teilkategorie bearbeiten" -#: part/views.py:2168 +#: part/views.py:2166 msgid "Delete Part Category" msgstr "Teilkategorie löschen" -#: part/views.py:2176 +#: part/views.py:2174 msgid "Part category was deleted" msgstr "Teilekategorie wurde gelöscht" -#: part/views.py:2232 +#: part/views.py:2230 #, fuzzy #| msgid "Create Part Parameter Template" msgid "Create Category Parameter Template" msgstr "Teilparametervorlage anlegen" -#: part/views.py:2335 +#: part/views.py:2333 #, fuzzy #| msgid "Edit Part Parameter Template" msgid "Edit Category Parameter Template" msgstr "Teilparametervorlage bearbeiten" -#: part/views.py:2393 +#: part/views.py:2391 #, fuzzy #| msgid "Delete Part Parameter Template" msgid "Delete Category Parameter Template" msgstr "Teilparametervorlage löschen" -#: part/views.py:2418 +#: part/views.py:2416 #, fuzzy #| msgid "Create BOM item" msgid "Create BOM Item" msgstr "BOM-Position anlegen" -#: part/views.py:2486 +#: part/views.py:2488 msgid "Edit BOM item" msgstr "BOM-Position beaarbeiten" -#: part/views.py:2536 +#: part/views.py:2545 msgid "Confim BOM item deletion" msgstr "Löschung von BOM-Position bestätigen" @@ -4081,11 +4152,11 @@ msgstr "Zuliefererbeschreibung des Teils" msgid "Part query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:227 +#: report/models.py:230 msgid "Report asset file" msgstr "" -#: report/models.py:230 +#: report/models.py:233 #, fuzzy #| msgid "Settings description" msgid "Asset file description" @@ -4159,7 +4230,7 @@ msgstr "Ziel-Lagerbestand" msgid "Add note (required)" msgstr "" -#: stock/forms.py:371 stock/views.py:920 stock/views.py:1118 +#: stock/forms.py:371 stock/views.py:935 stock/views.py:1133 msgid "Confirm stock adjustment" msgstr "Bestands-Anpassung bestätigen" @@ -4284,153 +4355,153 @@ msgstr "Objekt löschen wenn Lagerbestand aufgebraucht" msgid "Stock Item Notes" msgstr "Lagerobjekt-Notizen" -#: stock/models.py:458 +#: stock/models.py:459 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:509 +#: stock/models.py:510 #, fuzzy #| msgid "Item assigned to customer?" msgid "Assigned to Customer" msgstr "Ist dieses Objekt einem Kunden zugeteilt?" -#: stock/models.py:511 +#: stock/models.py:512 #, fuzzy #| msgid "Item assigned to customer?" msgid "Manually assigned to customer" msgstr "Ist dieses Objekt einem Kunden zugeteilt?" -#: stock/models.py:524 +#: stock/models.py:525 #, fuzzy #| msgid "Item assigned to customer?" msgid "Returned from customer" msgstr "Ist dieses Objekt einem Kunden zugeteilt?" -#: stock/models.py:526 +#: stock/models.py:527 #, fuzzy #| msgid "Create new stock location" msgid "Returned to location" msgstr "Neuen Lagerort anlegen" -#: stock/models.py:651 +#: stock/models.py:652 #, fuzzy #| msgid "Installed in Stock Item" msgid "Installed into stock item" msgstr "In Lagerobjekt installiert" -#: stock/models.py:659 +#: stock/models.py:660 #, fuzzy #| msgid "Installed in Stock Item" msgid "Installed stock item" msgstr "In Lagerobjekt installiert" -#: stock/models.py:683 +#: stock/models.py:684 #, fuzzy #| msgid "Installed in Stock Item" msgid "Uninstalled stock item" msgstr "In Lagerobjekt installiert" -#: stock/models.py:702 +#: stock/models.py:703 #, fuzzy #| msgid "Include sublocations" msgid "Uninstalled into location" msgstr "Unterlagerorte einschließen" -#: stock/models.py:802 +#: stock/models.py:803 #, fuzzy #| msgid "Part is not a virtual part" msgid "Part is not set as trackable" msgstr "Teil ist nicht virtuell" -#: stock/models.py:808 +#: stock/models.py:809 msgid "Quantity must be integer" msgstr "Anzahl muss eine Ganzzahl sein" -#: stock/models.py:814 +#: stock/models.py:815 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "Anzahl darf nicht die verfügbare Anzahl überschreiten ({n})" -#: stock/models.py:817 +#: stock/models.py:818 msgid "Serial numbers must be a list of integers" msgstr "Seriennummern muss eine Liste von Ganzzahlen sein" -#: stock/models.py:820 +#: stock/models.py:821 msgid "Quantity does not match serial numbers" msgstr "Anzahl stimmt nicht mit den Seriennummern überein" -#: stock/models.py:852 +#: stock/models.py:853 msgid "Add serial number" msgstr "Seriennummer hinzufügen" -#: stock/models.py:855 +#: stock/models.py:856 #, python-brace-format msgid "Serialized {n} items" msgstr "{n} Teile serialisiert" -#: stock/models.py:966 +#: stock/models.py:967 msgid "StockItem cannot be moved as it is not in stock" msgstr "Lagerobjekt kann nicht bewegt werden, da kein Bestand vorhanden ist" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Tracking entry title" msgstr "Name des Eintrags-Trackings" -#: stock/models.py:1322 +#: stock/models.py:1323 msgid "Entry notes" msgstr "Eintrags-Notizen" -#: stock/models.py:1324 +#: stock/models.py:1325 msgid "Link to external page for further information" msgstr "Link auf externe Seite für weitere Informationen" -#: stock/models.py:1384 +#: stock/models.py:1385 #, fuzzy #| msgid "Serial number for this item" msgid "Value must be provided for this test" msgstr "Seriennummer für dieses Teil" -#: stock/models.py:1390 +#: stock/models.py:1391 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1407 +#: stock/models.py:1408 msgid "Test" msgstr "" -#: stock/models.py:1408 +#: stock/models.py:1409 #, fuzzy #| msgid "Part name" msgid "Test name" msgstr "Name des Teils" -#: stock/models.py:1413 +#: stock/models.py:1414 #, fuzzy #| msgid "Search Results" msgid "Result" msgstr "Suchergebnisse" -#: stock/models.py:1414 templates/js/table_filters.js:162 +#: stock/models.py:1415 templates/js/table_filters.js:162 msgid "Test result" msgstr "" -#: stock/models.py:1420 +#: stock/models.py:1421 msgid "Test output value" msgstr "" -#: stock/models.py:1426 +#: stock/models.py:1427 #, fuzzy #| msgid "Attachments" msgid "Attachment" msgstr "Anhänge" -#: stock/models.py:1427 +#: stock/models.py:1428 #, fuzzy #| msgid "Delete attachment" msgid "Test result attachment" msgstr "Anhang löschen" -#: stock/models.py:1433 +#: stock/models.py:1434 #, fuzzy #| msgid "Edit notes" msgid "Test notes" @@ -4547,7 +4618,7 @@ msgstr "Ist dieses Objekt einem Kunden zugeteilt?" msgid "Return to stock" msgstr "Bestand zählen" -#: stock/templates/stock/item_base.html:138 templates/js/stock.js:981 +#: stock/templates/stock/item_base.html:138 templates/js/stock.js:985 #, fuzzy #| msgid "Installed in Stock Item" msgid "Uninstall stock item" @@ -4596,7 +4667,7 @@ msgstr "" msgid "Stock Item Details" msgstr "Lagerbestands-Details" -#: stock/templates/stock/item_base.html:231 templates/js/build.js:426 +#: stock/templates/stock/item_base.html:231 templates/js/build.js:442 #, fuzzy #| msgid "No stock location set" msgid "No location set" @@ -4608,7 +4679,7 @@ msgstr "Kein Lagerort gesetzt" msgid "Barcode Identifier" msgstr "Eindeutiger Bezeichner" -#: stock/templates/stock/item_base.html:252 templates/js/build.js:626 +#: stock/templates/stock/item_base.html:252 templates/js/build.js:642 #: templates/navbar.html:25 msgid "Build" msgstr "Bau" @@ -4743,8 +4814,8 @@ msgstr "Sub-Standorte" #: stock/templates/stock/location.html:79 #: stock/templates/stock/location.html:94 -#: templates/InvenTree/search_stock_items.html:6 templates/stats.html:21 -#: templates/stats.html:30 +#: templates/InvenTree/search_stock_items.html:6 templates/stats.html:48 +#: templates/stats.html:57 msgid "Stock Items" msgstr "Lagerobjekte" @@ -4753,7 +4824,7 @@ msgid "Stock Details" msgstr "Objekt-Details" #: stock/templates/stock/location.html:89 -#: templates/InvenTree/search_stock_location.html:6 templates/stats.html:25 +#: templates/InvenTree/search_stock_location.html:6 templates/stats.html:52 msgid "Stock Locations" msgstr "Lagerobjekt-Standorte" @@ -4769,7 +4840,7 @@ msgstr "Sind Sie sicher, dass Sie diesen Anhang löschen wollen?" msgid "The following stock items will be uninstalled" msgstr "Die folgenden Objekte werden erstellt" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:1314 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:1330 #, fuzzy #| msgid "Count Stock Items" msgid "Convert Stock Item" @@ -4905,162 +4976,145 @@ msgstr "Vorlage löschen" msgid "Select Test Report Template" msgstr "Vorlage löschen" -#: stock/views.py:522 +#: stock/views.py:537 #, fuzzy #| msgid "Select valid part" msgid "Select valid template" msgstr "Bitte ein gültiges Teil auswählen" -#: stock/views.py:575 +#: stock/views.py:590 msgid "Stock Export Options" msgstr "Lagerbestandsexportoptionen" -#: stock/views.py:697 +#: stock/views.py:712 msgid "Stock Item QR Code" msgstr "Lagerobjekt-QR-Code" -#: stock/views.py:723 +#: stock/views.py:738 #, fuzzy #| msgid "Installed in Stock Item" msgid "Install Stock Item" msgstr "In Lagerobjekt installiert" -#: stock/views.py:823 +#: stock/views.py:838 #, fuzzy #| msgid "Installed in Stock Item" msgid "Uninstall Stock Items" msgstr "In Lagerobjekt installiert" -#: stock/views.py:931 +#: stock/views.py:946 #, fuzzy #| msgid "Installed in Stock Item" msgid "Uninstalled stock items" msgstr "In Lagerobjekt installiert" -#: stock/views.py:956 +#: stock/views.py:971 msgid "Adjust Stock" msgstr "Lagerbestand anpassen" -#: stock/views.py:1066 +#: stock/views.py:1081 msgid "Move Stock Items" msgstr "Lagerobjekte bewegen" -#: stock/views.py:1067 +#: stock/views.py:1082 msgid "Count Stock Items" msgstr "Lagerobjekte zählen" -#: stock/views.py:1068 +#: stock/views.py:1083 msgid "Remove From Stock" msgstr "Aus Lagerbestand entfernen" -#: stock/views.py:1069 +#: stock/views.py:1084 msgid "Add Stock Items" msgstr "Lagerobjekte hinzufügen" -#: stock/views.py:1070 +#: stock/views.py:1085 msgid "Delete Stock Items" msgstr "Lagerobjekte löschen" -#: stock/views.py:1098 +#: stock/views.py:1113 msgid "Must enter integer value" msgstr "Nur Ganzzahl eingeben" -#: stock/views.py:1103 +#: stock/views.py:1118 msgid "Quantity must be positive" msgstr "Anzahl muss positiv sein" -#: stock/views.py:1110 +#: stock/views.py:1125 #, python-brace-format msgid "Quantity must not exceed {x}" msgstr "Anzahl darf {x} nicht überschreiten" -#: stock/views.py:1189 +#: stock/views.py:1204 #, python-brace-format msgid "Added stock to {n} items" msgstr "Vorrat zu {n} Lagerobjekten hinzugefügt" -#: stock/views.py:1204 +#: stock/views.py:1219 #, python-brace-format msgid "Removed stock from {n} items" msgstr "Vorrat von {n} Lagerobjekten entfernt" -#: stock/views.py:1217 +#: stock/views.py:1232 #, python-brace-format msgid "Counted stock for {n} items" msgstr "Bestand für {n} Objekte erfasst" -#: stock/views.py:1245 +#: stock/views.py:1260 msgid "No items were moved" msgstr "Keine Lagerobjekte wurden bewegt" -#: stock/views.py:1248 +#: stock/views.py:1263 #, python-brace-format msgid "Moved {n} items to {dest}" msgstr "{n} Teile nach {dest} bewegt" -#: stock/views.py:1267 +#: stock/views.py:1282 #, python-brace-format msgid "Deleted {n} stock items" msgstr "{n} Teile im Lager gelöscht" -#: stock/views.py:1279 +#: stock/views.py:1294 msgid "Edit Stock Item" msgstr "Lagerobjekt bearbeiten" -#: stock/views.py:1364 +#: stock/views.py:1380 msgid "Serialize Stock" msgstr "Lagerbestand erfassen" -#: stock/views.py:1458 templates/js/build.js:210 +#: stock/views.py:1474 templates/js/build.js:210 msgid "Create new Stock Item" msgstr "Neues Lagerobjekt hinzufügen" -#: stock/views.py:1559 +#: stock/views.py:1578 #, fuzzy #| msgid "Count stock items" msgid "Duplicate Stock Item" msgstr "Lagerobjekte zählen" -#: stock/views.py:1634 -msgid "Invalid quantity" -msgstr "Ungültige Menge" - -#: stock/views.py:1637 +#: stock/views.py:1650 #, fuzzy #| msgid "Quantity must be greater than zero" -msgid "Quantity cannot be less than zero" +msgid "Quantity cannot be negative" msgstr "Anzahl muss größer Null sein" -#: stock/views.py:1641 -msgid "Invalid part selection" -msgstr "Ungültige Teileauswahl" - -#: stock/views.py:1689 -#, python-brace-format -msgid "Created {n} new stock items" -msgstr "{n} neue Lagerobjekte erstellt" - -#: stock/views.py:1708 stock/views.py:1724 -msgid "Created new stock item" -msgstr "Neues Lagerobjekt erstellt" - -#: stock/views.py:1743 +#: stock/views.py:1736 msgid "Delete Stock Location" msgstr "Standort löschen" -#: stock/views.py:1757 +#: stock/views.py:1750 msgid "Delete Stock Item" msgstr "Lagerobjekt löschen" -#: stock/views.py:1769 +#: stock/views.py:1762 msgid "Delete Stock Tracking Entry" msgstr "Lagerbestands-Tracking-Eintrag löschen" -#: stock/views.py:1788 +#: stock/views.py:1781 msgid "Edit Stock Tracking Entry" msgstr "Lagerbestands-Tracking-Eintrag bearbeiten" -#: stock/views.py:1798 +#: stock/views.py:1791 msgid "Add Stock Tracking Entry" msgstr "Lagerbestands-Tracking-Eintrag hinzufügen" @@ -5088,6 +5142,12 @@ msgstr "Teil existiert nicht" msgid "BOM Waiting Validation" msgstr "" +#: templates/InvenTree/build_overdue.html:7 +#, fuzzy +#| msgid "Parent Build" +msgid "Overdue Builds" +msgstr "Eltern-Bau" + #: templates/InvenTree/build_pending.html:7 #, fuzzy #| msgid "Parent Build" @@ -5233,7 +5293,7 @@ msgid "Edit setting" msgstr "Einstellungen" #: templates/InvenTree/settings/settings.html:7 -#: templates/InvenTree/settings/settings.html:13 templates/navbar.html:62 +#: templates/InvenTree/settings/settings.html:13 templates/navbar.html:66 msgid "Settings" msgstr "Einstellungen" @@ -5351,34 +5411,30 @@ msgid "InvenTree Version Information" msgstr "InvenTree-Versionsinformationen" #: templates/about.html:21 -msgid "Instance Name" -msgstr "Instanzname" - -#: templates/about.html:26 msgid "InvenTree Version" msgstr "InvenTree-Version" -#: templates/about.html:30 +#: templates/about.html:25 msgid "Django Version" msgstr "Django-Version" -#: templates/about.html:34 +#: templates/about.html:29 msgid "Commit Hash" msgstr "Commit-Hash" -#: templates/about.html:38 +#: templates/about.html:33 msgid "Commit Date" msgstr "Commit-Datum" -#: templates/about.html:42 +#: templates/about.html:37 msgid "InvenTree Documentation" msgstr "InvenTree-Dokumentation" -#: templates/about.html:47 +#: templates/about.html:42 msgid "View Code on GitHub" msgstr "Code auf GitHub ansehen" -#: templates/about.html:51 +#: templates/about.html:46 msgid "Submit Bug Report" msgstr "Fehlerbericht senden" @@ -5505,55 +5561,55 @@ msgstr "Vorrat zu {n} Lagerobjekten hinzugefügt" msgid "Barcode does not match Stock Item" msgstr "Neues Lagerobjekt hinzufügen" -#: templates/js/bom.js:159 +#: templates/js/bom.js:165 msgid "Open subassembly" msgstr "Unterbaugruppe öffnen" -#: templates/js/bom.js:200 +#: templates/js/bom.js:206 #, fuzzy #| msgid "Options" msgid "Optional" msgstr "Optionen" -#: templates/js/bom.js:240 +#: templates/js/bom.js:252 msgid "No pricing available" msgstr "Keine Preisinformation verfügbar" -#: templates/js/bom.js:259 templates/js/build.js:555 +#: templates/js/bom.js:272 templates/js/build.js:571 #, fuzzy #| msgid "Options" msgid "Actions" msgstr "Optionen" -#: templates/js/bom.js:267 +#: templates/js/bom.js:280 msgid "Validate BOM Item" msgstr "BOM-Position validieren" -#: templates/js/bom.js:269 +#: templates/js/bom.js:282 msgid "This line has been validated" msgstr "Diese Position wurde validiert" -#: templates/js/bom.js:271 +#: templates/js/bom.js:284 msgid "Edit BOM Item" msgstr "BOM-Position bearbeiten" -#: templates/js/bom.js:273 +#: templates/js/bom.js:286 msgid "Delete BOM Item" msgstr "BOM-Position löschen" -#: templates/js/bom.js:346 templates/js/build.js:289 +#: templates/js/bom.js:363 templates/js/build.js:305 msgid "No BOM items found" msgstr "Keine BOM-Einträge gefunden" -#: templates/js/bom.js:491 +#: templates/js/bom.js:509 msgid "INACTIVE" msgstr "INAKTIV" -#: templates/js/bom.js:505 +#: templates/js/bom.js:523 msgid "Uses" msgstr "" -#: templates/js/bom.js:516 +#: templates/js/bom.js:534 #, fuzzy #| msgid "No matching action found" msgid "No matching parts found" @@ -5587,37 +5643,43 @@ msgstr "Bau entfernt" msgid "New Stock Item" msgstr "Neues Lagerobjekt" -#: templates/js/build.js:477 +#: templates/js/build.js:493 #, fuzzy #| msgid "Required" msgid "Required Part" msgstr "benötigt" -#: templates/js/build.js:498 +#: templates/js/build.js:514 #, fuzzy #| msgid "Quantity" msgid "Quantity Per" msgstr "Anzahl" -#: templates/js/build.js:562 +#: templates/js/build.js:578 #, fuzzy #| msgid "Builds" msgid "Build stock" msgstr "Baue" -#: templates/js/build.js:566 templates/stock_table.html:25 +#: templates/js/build.js:582 templates/stock_table.html:25 msgid "Order stock" msgstr "Bestand bestellen" -#: templates/js/build.js:569 +#: templates/js/build.js:585 msgid "Allocate stock" msgstr "Lagerbestand zuweisen" -#: templates/js/build.js:610 +#: templates/js/build.js:626 msgid "No builds matching query" msgstr "Keine Baue passen zur Anfrage" -#: templates/js/build.js:720 +#: templates/js/build.js:656 +#, fuzzy +#| msgid "Build order allocation is complete" +msgid "Build order is overdue" +msgstr "Bau-Zuweisung ist vollständig" + +#: templates/js/build.js:747 msgid "No parts allocated for" msgstr "Keine Teile zugeordnet zu" @@ -5653,19 +5715,19 @@ msgstr "Baugruppe" msgid "Link" msgstr "Link" -#: templates/js/order.js:128 +#: templates/js/order.js:135 msgid "No purchase orders found" msgstr "Keine Bestellungen gefunden" -#: templates/js/order.js:181 templates/js/stock.js:677 +#: templates/js/order.js:188 templates/js/stock.js:681 msgid "Date" msgstr "Datum" -#: templates/js/order.js:211 +#: templates/js/order.js:218 msgid "No sales orders found" msgstr "Keine Aufträge gefunden" -#: templates/js/order.js:268 +#: templates/js/order.js:275 msgid "Shipment Date" msgstr "Versanddatum" @@ -5700,7 +5762,7 @@ msgid "No parts found" msgstr "Keine Teile gefunden" #: templates/js/part.js:343 templates/js/stock.js:456 -#: templates/js/stock.js:1013 +#: templates/js/stock.js:1017 msgid "Select" msgstr "Auswählen" @@ -5708,7 +5770,7 @@ msgstr "Auswählen" msgid "No category" msgstr "Keine Kategorie" -#: templates/js/part.js:429 templates/js/table_filters.js:256 +#: templates/js/part.js:429 templates/js/table_filters.js:260 msgid "Low stock" msgstr "Bestand niedrig" @@ -5832,45 +5894,51 @@ msgstr "Lagerobjekt wurde zugewiesen" msgid "Stock item has been installed in another item" msgstr "Ist dieses Teil in einem anderen verbaut?" -#: templates/js/stock.js:541 +#: templates/js/stock.js:542 #, fuzzy #| msgid "StockItem has been allocated" msgid "Stock item has been rejected" msgstr "Lagerobjekt wurde zugewiesen" -#: templates/js/stock.js:545 +#: templates/js/stock.js:546 #, fuzzy #| msgid "StockItem is lost" msgid "Stock item is lost" msgstr "Lagerobjekt verloren" -#: templates/js/stock.js:549 templates/js/table_filters.js:106 +#: templates/js/stock.js:549 +#, fuzzy +#| msgid "StockItem is lost" +msgid "Stock item is destroyed" +msgstr "Lagerobjekt verloren" + +#: templates/js/stock.js:553 templates/js/table_filters.js:106 #, fuzzy #| msgid "Delete" msgid "Depleted" msgstr "Löschen" -#: templates/js/stock.js:743 +#: templates/js/stock.js:747 msgid "No user information" msgstr "Keine Benutzerinformation" -#: templates/js/stock.js:852 +#: templates/js/stock.js:856 msgid "Create New Location" msgstr "Neuen Standort anlegen" -#: templates/js/stock.js:951 +#: templates/js/stock.js:955 #, fuzzy #| msgid "Serial Number" msgid "Serial" msgstr "Seriennummer" -#: templates/js/stock.js:1044 templates/js/table_filters.js:121 +#: templates/js/stock.js:1048 templates/js/table_filters.js:121 #, fuzzy #| msgid "Installed In" msgid "Installed" msgstr "Installiert in" -#: templates/js/stock.js:1069 +#: templates/js/stock.js:1073 #, fuzzy #| msgid "Installed In" msgid "Install item" @@ -5931,7 +5999,7 @@ msgstr "Seriennummer" msgid "Batch code" msgstr "Losnummer" -#: templates/js/table_filters.js:91 templates/js/table_filters.js:223 +#: templates/js/table_filters.js:91 templates/js/table_filters.js:227 msgid "Active parts" msgstr "Aktive Teile" @@ -5999,47 +6067,47 @@ msgstr "Bestandsstatus" msgid "Build status" msgstr "Bau-Status" -#: templates/js/table_filters.js:196 templates/js/table_filters.js:209 +#: templates/js/table_filters.js:200 templates/js/table_filters.js:213 msgid "Order status" msgstr "Bestellstatus" -#: templates/js/table_filters.js:201 templates/js/table_filters.js:214 +#: templates/js/table_filters.js:205 templates/js/table_filters.js:218 #, fuzzy #| msgid "Cascading" msgid "Outstanding" msgstr "Kaskadierend" -#: templates/js/table_filters.js:233 +#: templates/js/table_filters.js:237 msgid "Include subcategories" msgstr "Unterkategorien einschließen" -#: templates/js/table_filters.js:234 +#: templates/js/table_filters.js:238 msgid "Include parts in subcategories" msgstr "Teile in Unterkategorien einschließen" -#: templates/js/table_filters.js:238 +#: templates/js/table_filters.js:242 msgid "Has IPN" msgstr "" -#: templates/js/table_filters.js:239 +#: templates/js/table_filters.js:243 #, fuzzy #| msgid "Internal Part Number" msgid "Part has internal part number" msgstr "Interne Teilenummer" -#: templates/js/table_filters.js:244 +#: templates/js/table_filters.js:248 msgid "Show active parts" msgstr "Aktive Teile anzeigen" -#: templates/js/table_filters.js:252 +#: templates/js/table_filters.js:256 msgid "Stock available" msgstr "Bestand verfügbar" -#: templates/js/table_filters.js:268 +#: templates/js/table_filters.js:272 msgid "Starred" msgstr "Favorit" -#: templates/js/table_filters.js:280 +#: templates/js/table_filters.js:284 msgid "Purchasable" msgstr "Käuflich" @@ -6069,30 +6137,54 @@ msgstr "Verkaufen" msgid "Scan Barcode" msgstr "" -#: templates/navbar.html:59 users/models.py:27 +#: templates/navbar.html:57 +msgid "InvenTree server issues detected" +msgstr "" + +#: templates/navbar.html:63 users/models.py:27 msgid "Admin" msgstr "Admin" -#: templates/navbar.html:63 +#: templates/navbar.html:67 msgid "Logout" msgstr "Ausloggen" -#: templates/navbar.html:65 +#: templates/navbar.html:69 msgid "Login" msgstr "Einloggen" -#: templates/navbar.html:68 +#: templates/navbar.html:80 msgid "About InvenTree" msgstr "Über InvenBaum" -#: templates/navbar.html:69 -msgid "Statistics" -msgstr "Statistiken" - #: templates/search_form.html:6 templates/search_form.html:8 msgid "Search" msgstr "Suche" +#: templates/stats.html:9 +msgid "Server" +msgstr "" + +#: templates/stats.html:13 +msgid "Instance Name" +msgstr "Instanzname" + +#: templates/stats.html:18 +#, fuzzy +#| msgid "Order status" +msgid "Server status" +msgstr "Bestellstatus" + +#: templates/stats.html:21 +msgid "Healthy" +msgstr "" + +#: templates/stats.html:23 +#, fuzzy +#| msgid "Issue Order" +msgid "Issues detected" +msgstr "Bestellung aufgeben" + #: templates/stock_table.html:6 #, fuzzy #| msgid "Edit Stock Location" @@ -6153,23 +6245,23 @@ msgstr "Benutzer" msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:120 +#: users/admin.py:178 msgid "The following users are members of multiple groups:" msgstr "" -#: users/admin.py:143 +#: users/admin.py:201 #, fuzzy #| msgid "External Link" msgid "Personal info" msgstr "Externer Link" -#: users/admin.py:144 +#: users/admin.py:202 #, fuzzy #| msgid "Revision" msgid "Permissions" msgstr "Revision" -#: users/admin.py:147 +#: users/admin.py:205 #, fuzzy #| msgid "Import BOM data" msgid "Important dates" @@ -6215,6 +6307,33 @@ msgstr "" msgid "Permission to delete items" msgstr "Ausgewählte Stücklistenpositionen entfernen" +#~ msgid "Database Statistics" +#~ msgstr "Datenbankstatistiken" + +#~ msgid "BOM Price" +#~ msgstr "Stücklistenpreis" + +#~ msgid "BOM pricing is incomplete" +#~ msgstr "Stücklistenbepreisung ist unvollständig" + +#~ msgid "No pricing information" +#~ msgstr "Keine Preisinformation" + +#~ msgid "Invalid quantity" +#~ msgstr "Ungültige Menge" + +#~ msgid "Invalid part selection" +#~ msgstr "Ungültige Teileauswahl" + +#~ msgid "Created {n} new stock items" +#~ msgstr "{n} neue Lagerobjekte erstellt" + +#~ msgid "Created new stock item" +#~ msgstr "Neues Lagerobjekt erstellt" + +#~ msgid "Statistics" +#~ msgstr "Statistiken" + #~ msgid "Currency Symbol e.g. $" #~ msgstr "Währungs-Symbol (z.B. €)" diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po index f6cb0f4604..6f60f8ed93 100644 --- a/InvenTree/locale/en/LC_MESSAGES/django.po +++ b/InvenTree/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-12 22:05+1100\n" +"POT-Creation-Date: 2020-12-16 19:08+1100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,39 +18,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: InvenTree/api.py:85 +#: InvenTree/api.py:90 msgid "No action specified" msgstr "" -#: InvenTree/api.py:99 +#: InvenTree/api.py:104 msgid "No matching action found" msgstr "" -#: InvenTree/forms.py:108 build/forms.py:82 build/forms.py:170 +#: InvenTree/forms.py:110 build/forms.py:91 build/forms.py:179 msgid "Confirm" msgstr "" -#: InvenTree/forms.py:124 +#: InvenTree/forms.py:126 msgid "Confirm item deletion" msgstr "" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Enter new password" msgstr "" -#: InvenTree/forms.py:163 +#: InvenTree/forms.py:165 msgid "Confirm new password" msgstr "" -#: InvenTree/forms.py:198 +#: InvenTree/forms.py:200 msgid "Apply Theme" msgstr "" -#: InvenTree/forms.py:228 +#: InvenTree/forms.py:230 msgid "Select Category" msgstr "" #: InvenTree/helpers.py:361 order/models.py:189 order/models.py:271 +#: stock/views.py:1646 msgid "Invalid quantity provided" msgstr "" @@ -90,7 +91,7 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:68 templates/js/stock.js:734 +#: InvenTree/models.py:68 templates/js/stock.js:738 msgid "User" msgstr "" @@ -103,24 +104,32 @@ msgstr "" msgid "Description (optional)" msgstr "" -#: InvenTree/settings.py:354 +#: InvenTree/settings.py:422 msgid "English" msgstr "" -#: InvenTree/settings.py:355 +#: InvenTree/settings.py:423 msgid "German" msgstr "" -#: InvenTree/settings.py:356 +#: InvenTree/settings.py:424 msgid "French" msgstr "" -#: InvenTree/settings.py:357 +#: InvenTree/settings.py:425 msgid "Polish" msgstr "" +#: InvenTree/status.py:24 +msgid "Celery worker check failed" +msgstr "" + +#: InvenTree/status.py:27 +msgid "InvenTree system health checks failed" +msgstr "" + #: InvenTree/status_codes.py:94 InvenTree/status_codes.py:135 -#: InvenTree/status_codes.py:222 +#: InvenTree/status_codes.py:223 msgid "Pending" msgstr "" @@ -128,12 +137,12 @@ msgstr "" msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:96 InvenTree/status_codes.py:225 +#: InvenTree/status_codes.py:96 InvenTree/status_codes.py:226 msgid "Complete" msgstr "" #: InvenTree/status_codes.py:97 InvenTree/status_codes.py:137 -#: InvenTree/status_codes.py:224 +#: InvenTree/status_codes.py:225 msgid "Cancelled" msgstr "" @@ -172,7 +181,7 @@ msgstr "" msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:223 +#: InvenTree/status_codes.py:224 msgid "Production" msgstr "" @@ -210,28 +219,28 @@ msgstr "" msgid "Overage must be an integer value or a percentage" msgstr "" -#: InvenTree/views.py:494 +#: InvenTree/views.py:495 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:543 +#: InvenTree/views.py:544 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:558 templates/InvenTree/settings/user.html:18 +#: InvenTree/views.py:559 templates/InvenTree/settings/user.html:18 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:569 templates/InvenTree/settings/user.html:22 +#: InvenTree/views.py:570 templates/InvenTree/settings/user.html:22 msgid "Set Password" msgstr "" -#: InvenTree/views.py:588 +#: InvenTree/views.py:589 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:794 -msgid "Database Statistics" +#: InvenTree/views.py:795 templates/navbar.html:78 +msgid "System Information" msgstr "" #: barcode/api.py:53 barcode/api.py:150 @@ -278,9 +287,9 @@ msgstr "" msgid "Build Order reference" msgstr "" -#: build/forms.py:70 build/templates/build/auto_allocate.html:17 -#: build/templates/build/build_base.html:78 -#: build/templates/build/detail.html:29 common/models.py:488 +#: build/forms.py:79 build/templates/build/auto_allocate.html:17 +#: build/templates/build/build_base.html:83 +#: build/templates/build/detail.html:29 common/models.py:494 #: company/forms.py:112 company/templates/company/supplier_part_pricing.html:75 #: order/templates/order/order_wizard/select_parts.html:32 #: order/templates/order/purchase_order_detail.html:179 @@ -293,190 +302,199 @@ msgstr "" #: stock/templates/stock/item_base.html:46 #: stock/templates/stock/item_base.html:197 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:338 -#: templates/js/bom.js:189 templates/js/build.js:404 templates/js/stock.js:725 -#: templates/js/stock.js:953 +#: templates/js/bom.js:195 templates/js/build.js:420 templates/js/stock.js:729 +#: templates/js/stock.js:957 msgid "Quantity" msgstr "" -#: build/forms.py:71 +#: build/forms.py:80 msgid "Enter quantity for build output" msgstr "" -#: build/forms.py:75 stock/forms.py:111 +#: build/forms.py:84 stock/forms.py:111 msgid "Serial numbers" msgstr "" -#: build/forms.py:77 +#: build/forms.py:86 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/forms.py:83 +#: build/forms.py:92 msgid "Confirm creation of build outut" msgstr "" -#: build/forms.py:103 +#: build/forms.py:112 msgid "Confirm deletion of build output" msgstr "" -#: build/forms.py:124 +#: build/forms.py:133 msgid "Confirm unallocation of stock" msgstr "" -#: build/forms.py:148 +#: build/forms.py:157 msgid "Confirm stock allocation" msgstr "" -#: build/forms.py:171 +#: build/forms.py:180 msgid "Mark build as complete" msgstr "" -#: build/forms.py:195 +#: build/forms.py:204 msgid "Location of completed parts" msgstr "" -#: build/forms.py:200 +#: build/forms.py:209 msgid "Confirm completion with incomplete stock allocation" msgstr "" -#: build/forms.py:203 +#: build/forms.py:212 msgid "Confirm build completion" msgstr "" -#: build/forms.py:223 build/views.py:68 +#: build/forms.py:232 build/views.py:68 msgid "Confirm build cancellation" msgstr "" -#: build/forms.py:237 +#: build/forms.py:246 msgid "Select quantity of stock to allocate" msgstr "" -#: build/models.py:56 build/templates/build/build_base.html:8 +#: build/models.py:59 build/templates/build/build_base.html:8 #: build/templates/build/build_base.html:35 #: part/templates/part/allocation.html:20 msgid "Build Order" msgstr "" -#: build/models.py:57 build/templates/build/index.html:6 +#: build/models.py:60 build/templates/build/index.html:6 #: build/templates/build/index.html:14 order/templates/order/so_builds.html:11 #: order/templates/order/so_tabs.html:9 part/templates/part/tabs.html:31 #: templates/InvenTree/settings/tabs.html:28 users/models.py:30 msgid "Build Orders" msgstr "" -#: build/models.py:72 +#: build/models.py:75 msgid "Build Order Reference" msgstr "" -#: build/models.py:73 order/templates/order/purchase_order_detail.html:174 -#: templates/js/bom.js:181 templates/js/build.js:493 +#: build/models.py:76 order/templates/order/purchase_order_detail.html:174 +#: templates/js/bom.js:187 templates/js/build.js:509 msgid "Reference" msgstr "" -#: build/models.py:80 build/templates/build/detail.html:19 +#: build/models.py:83 build/templates/build/detail.html:19 #: company/templates/company/detail.html:23 #: company/templates/company/supplier_part_base.html:61 #: company/templates/company/supplier_part_detail.html:27 #: order/templates/order/purchase_order_detail.html:161 #: part/templates/part/detail.html:51 part/templates/part/set_category.html:14 -#: templates/InvenTree/search.html:147 templates/js/bom.js:174 -#: templates/js/bom.js:499 templates/js/build.js:642 templates/js/company.js:56 -#: templates/js/order.js:168 templates/js/order.js:250 templates/js/part.js:188 +#: templates/InvenTree/search.html:147 templates/js/bom.js:180 +#: templates/js/bom.js:517 templates/js/build.js:664 templates/js/company.js:56 +#: templates/js/order.js:175 templates/js/order.js:257 templates/js/part.js:188 #: templates/js/part.js:271 templates/js/part.js:391 templates/js/part.js:572 -#: templates/js/stock.js:494 templates/js/stock.js:706 +#: templates/js/stock.js:494 templates/js/stock.js:710 msgid "Description" msgstr "" -#: build/models.py:83 +#: build/models.py:86 msgid "Brief description of the build" msgstr "" -#: build/models.py:91 build/templates/build/build_base.html:94 +#: build/models.py:95 build/templates/build/build_base.html:104 #: build/templates/build/detail.html:75 msgid "Parent Build" msgstr "" -#: build/models.py:92 +#: build/models.py:96 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:97 build/templates/build/auto_allocate.html:16 -#: build/templates/build/build_base.html:73 +#: build/models.py:101 build/templates/build/auto_allocate.html:16 +#: build/templates/build/build_base.html:78 #: build/templates/build/detail.html:24 order/models.py:530 #: order/templates/order/order_wizard/select_parts.html:30 #: order/templates/order/purchase_order_detail.html:148 #: order/templates/order/receive_parts.html:19 part/models.py:315 #: part/templates/part/part_app_base.html:7 part/templates/part/related.html:26 #: part/templates/part/set_category.html:13 templates/InvenTree/search.html:133 -#: templates/js/barcode.js:336 templates/js/bom.js:147 templates/js/bom.js:484 -#: templates/js/build.js:647 templates/js/company.js:138 +#: templates/js/barcode.js:336 templates/js/bom.js:153 templates/js/bom.js:502 +#: templates/js/build.js:669 templates/js/company.js:138 #: templates/js/part.js:252 templates/js/part.js:357 templates/js/stock.js:468 -#: templates/js/stock.js:1025 +#: templates/js/stock.js:1029 msgid "Part" msgstr "" -#: build/models.py:105 +#: build/models.py:109 msgid "Select part to build" msgstr "" -#: build/models.py:110 +#: build/models.py:114 msgid "Sales Order Reference" msgstr "" -#: build/models.py:114 +#: build/models.py:118 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:119 +#: build/models.py:123 msgid "Source Location" msgstr "" -#: build/models.py:123 +#: build/models.py:127 msgid "" "Select location to take stock from for this build (leave blank to take from " "any stock location)" msgstr "" -#: build/models.py:128 +#: build/models.py:132 msgid "Destination Location" msgstr "" -#: build/models.py:132 +#: build/models.py:136 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:136 +#: build/models.py:140 msgid "Build Quantity" msgstr "" -#: build/models.py:139 +#: build/models.py:143 msgid "Number of stock items to build" msgstr "" -#: build/models.py:143 +#: build/models.py:147 msgid "Completed items" msgstr "" -#: build/models.py:145 +#: build/models.py:149 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:149 part/templates/part/part_base.html:155 +#: build/models.py:153 part/templates/part/part_base.html:155 msgid "Build Status" msgstr "" -#: build/models.py:153 +#: build/models.py:157 msgid "Build status code" msgstr "" -#: build/models.py:157 stock/models.py:390 +#: build/models.py:161 stock/models.py:390 msgid "Batch Code" msgstr "" -#: build/models.py:161 +#: build/models.py:165 msgid "Batch code for this build output" msgstr "" -#: build/models.py:176 build/templates/build/detail.html:89 +#: build/models.py:172 +msgid "Target completion date" +msgstr "" + +#: build/models.py:173 +msgid "" +"Target date for build completion. Build will be overdue after this date." +msgstr "" + +#: build/models.py:186 build/templates/build/detail.html:89 #: company/templates/company/supplier_part_base.html:68 #: company/templates/company/supplier_part_detail.html:24 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:102 @@ -484,84 +502,84 @@ msgstr "" msgid "External Link" msgstr "" -#: build/models.py:177 part/models.py:672 stock/models.py:386 +#: build/models.py:187 part/models.py:672 stock/models.py:386 msgid "Link to external URL" msgstr "" -#: build/models.py:181 build/templates/build/tabs.html:23 company/models.py:344 +#: build/models.py:191 build/templates/build/tabs.html:23 company/models.py:344 #: company/templates/company/tabs.html:33 order/templates/order/po_tabs.html:18 #: order/templates/order/purchase_order_detail.html:213 #: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:73 #: stock/forms.py:307 stock/forms.py:339 stock/forms.py:367 stock/models.py:448 -#: stock/models.py:1432 stock/templates/stock/tabs.html:26 -#: templates/js/barcode.js:391 templates/js/bom.js:250 -#: templates/js/stock.js:116 templates/js/stock.js:578 +#: stock/models.py:1433 stock/templates/stock/tabs.html:26 +#: templates/js/barcode.js:391 templates/js/bom.js:263 +#: templates/js/stock.js:116 templates/js/stock.js:582 msgid "Notes" msgstr "" -#: build/models.py:182 +#: build/models.py:192 msgid "Extra build notes" msgstr "" -#: build/models.py:551 +#: build/models.py:577 msgid "No build output specified" msgstr "" -#: build/models.py:554 +#: build/models.py:580 msgid "Build output is already completed" msgstr "" -#: build/models.py:557 +#: build/models.py:583 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:632 +#: build/models.py:658 msgid "Completed build output" msgstr "" -#: build/models.py:870 +#: build/models.py:896 msgid "BuildItem must be unique for build, stock_item and install_into" msgstr "" -#: build/models.py:892 +#: build/models.py:918 msgid "Build item must specify a build output" msgstr "" -#: build/models.py:897 +#: build/models.py:923 #, python-brace-format msgid "Selected stock item not found in BOM for part '{p}'" msgstr "" -#: build/models.py:901 +#: build/models.py:927 #, python-brace-format msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "" -#: build/models.py:908 order/models.py:614 +#: build/models.py:934 order/models.py:614 msgid "StockItem is over-allocated" msgstr "" -#: build/models.py:912 order/models.py:617 +#: build/models.py:938 order/models.py:617 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:916 +#: build/models.py:942 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:956 +#: build/models.py:982 msgid "Build to allocate parts" msgstr "" -#: build/models.py:963 +#: build/models.py:989 msgid "Source stock item" msgstr "" -#: build/models.py:975 +#: build/models.py:1001 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:983 +#: build/models.py:1009 msgid "Destination stock item" msgstr "" @@ -591,7 +609,7 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/allocate.html:33 templates/js/build.js:574 +#: build/templates/build/allocate.html:33 templates/js/build.js:590 msgid "Unallocate stock" msgstr "" @@ -630,7 +648,7 @@ msgstr "" #: stock/templates/stock/item_base.html:227 #: stock/templates/stock/stock_adjust.html:17 #: templates/InvenTree/search.html:183 templates/js/barcode.js:337 -#: templates/js/build.js:418 templates/js/stock.js:570 +#: templates/js/build.js:434 templates/js/stock.js:574 msgid "Location" msgstr "" @@ -660,49 +678,58 @@ msgstr "" msgid "Admin view" msgstr "" -#: build/templates/build/build_base.html:46 +#: build/templates/build/build_base.html:43 +#: build/templates/build/build_base.html:92 templates/js/table_filters.js:190 +msgid "Overdue" +msgstr "" + +#: build/templates/build/build_base.html:51 msgid "Edit Build" msgstr "" -#: build/templates/build/build_base.html:50 +#: build/templates/build/build_base.html:55 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:53 build/views.py:58 +#: build/templates/build/build_base.html:58 build/views.py:58 msgid "Cancel Build" msgstr "" -#: build/templates/build/build_base.html:59 build/views.py:767 +#: build/templates/build/build_base.html:64 msgid "Delete Build" msgstr "" -#: build/templates/build/build_base.html:69 build/templates/build/detail.html:9 +#: build/templates/build/build_base.html:74 build/templates/build/detail.html:9 msgid "Build Details" msgstr "" -#: build/templates/build/build_base.html:83 +#: build/templates/build/build_base.html:88 #: build/templates/build/detail.html:57 #: order/templates/order/receive_parts.html:24 #: stock/templates/stock/item_base.html:312 templates/InvenTree/search.html:175 -#: templates/js/barcode.js:42 templates/js/build.js:675 -#: templates/js/order.js:173 templates/js/order.js:255 -#: templates/js/stock.js:557 templates/js/stock.js:961 +#: templates/js/barcode.js:42 templates/js/build.js:697 +#: templates/js/order.js:180 templates/js/order.js:262 +#: templates/js/stock.js:561 templates/js/stock.js:965 msgid "Status" msgstr "" -#: build/templates/build/build_base.html:88 +#: build/templates/build/build_base.html:92 +msgid "This build was due on" +msgstr "" + +#: build/templates/build/build_base.html:98 #: build/templates/build/detail.html:62 msgid "Progress" msgstr "" -#: build/templates/build/build_base.html:101 +#: build/templates/build/build_base.html:111 #: build/templates/build/detail.html:82 order/models.py:528 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:33 #: order/templates/order/sales_order_notes.html:10 #: order/templates/order/sales_order_ship.html:25 #: part/templates/part/allocation.html:27 -#: stock/templates/stock/item_base.html:221 templates/js/order.js:222 +#: stock/templates/stock/item_base.html:221 templates/js/order.js:229 msgid "Sales Order" msgstr "" @@ -803,35 +830,35 @@ msgid "Destination location not specified" msgstr "" #: build/templates/build/detail.html:68 -#: stock/templates/stock/item_base.html:245 templates/js/stock.js:565 -#: templates/js/stock.js:968 templates/js/table_filters.js:80 +#: stock/templates/stock/item_base.html:245 templates/js/stock.js:569 +#: templates/js/stock.js:972 templates/js/table_filters.js:80 #: templates/js/table_filters.js:151 msgid "Batch" msgstr "" #: build/templates/build/detail.html:95 #: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:100 templates/js/build.js:683 +#: order/templates/order/sales_order_base.html:100 templates/js/build.js:705 msgid "Created" msgstr "" -#: build/templates/build/detail.html:105 -msgid "BOM Price" +#: build/templates/build/detail.html:100 templates/js/build.js:710 +msgid "Target Date" msgstr "" -#: build/templates/build/detail.html:110 -msgid "BOM pricing is incomplete" +#: build/templates/build/detail.html:106 +msgid "No target date set" msgstr "" -#: build/templates/build/detail.html:113 -msgid "No pricing information" -msgstr "" - -#: build/templates/build/detail.html:120 templates/js/build.js:661 -#: templates/js/build.js:688 +#: build/templates/build/detail.html:111 templates/js/build.js:683 +#: templates/js/build.js:715 msgid "Completed" msgstr "" +#: build/templates/build/detail.html:115 +msgid "Build not complete" +msgstr "" + #: build/templates/build/edit_build_item.html:7 msgid "Alter the quantity of stock allocated to the build output" msgstr "" @@ -895,7 +922,7 @@ msgstr "" msgid "Create Build Output" msgstr "" -#: build/views.py:207 stock/models.py:827 stock/views.py:1660 +#: build/views.py:207 stock/models.py:828 stock/views.py:1667 msgid "Serial numbers already exist" msgstr "" @@ -956,13 +983,17 @@ msgid "Created new build" msgstr "" #: build/views.py:724 -msgid "Edit Build Details" +msgid "Edit Build Order Details" msgstr "" #: build/views.py:758 msgid "Edited build" msgstr "" +#: build/views.py:767 +msgid "Delete Build Order" +msgstr "" + #: build/views.py:784 msgid "Removed parts from build allocation" msgstr "" @@ -979,8 +1010,8 @@ msgstr "" msgid "Stock item is over-allocated" msgstr "" -#: build/views.py:847 templates/js/bom.js:215 templates/js/build.js:503 -#: templates/js/build.js:731 +#: build/views.py:847 templates/js/bom.js:221 templates/js/build.js:519 +#: templates/js/build.js:758 msgid "Available" msgstr "" @@ -1094,7 +1125,7 @@ msgid "Copy category parameter templates when creating a part" msgstr "" #: common/models.py:115 part/models.py:743 part/templates/part/detail.html:168 -#: templates/js/table_filters.js:264 +#: templates/js/table_filters.js:268 msgid "Component" msgstr "" @@ -1111,7 +1142,7 @@ msgid "Parts are purchaseable by default" msgstr "" #: common/models.py:129 part/models.py:759 part/templates/part/detail.html:198 -#: templates/js/table_filters.js:272 +#: templates/js/table_filters.js:276 msgid "Salable" msgstr "" @@ -1120,7 +1151,7 @@ msgid "Parts are salable by default" msgstr "" #: common/models.py:136 part/models.py:749 part/templates/part/detail.html:178 -#: templates/js/table_filters.js:31 templates/js/table_filters.js:276 +#: templates/js/table_filters.js:31 templates/js/table_filters.js:280 msgid "Trackable" msgstr "" @@ -1160,36 +1191,36 @@ msgstr "" msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:373 +#: common/models.py:376 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:375 +#: common/models.py:378 msgid "Settings value" msgstr "" -#: common/models.py:431 +#: common/models.py:437 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:445 +#: common/models.py:451 msgid "Key string must be unique" msgstr "" -#: common/models.py:489 company/forms.py:113 +#: common/models.py:495 company/forms.py:113 msgid "Price break quantity" msgstr "" -#: common/models.py:497 company/templates/company/supplier_part_pricing.html:80 -#: part/templates/part/sale_prices.html:87 templates/js/bom.js:234 +#: common/models.py:503 company/templates/company/supplier_part_pricing.html:80 +#: part/templates/part/sale_prices.html:87 templates/js/bom.js:246 msgid "Price" msgstr "" -#: common/models.py:498 +#: common/models.py:504 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:521 +#: common/models.py:527 msgid "Default" msgstr "" @@ -1201,6 +1232,14 @@ msgstr "" msgid "Change Setting" msgstr "" +#: common/views.py:94 +msgid "Supplied value is not allowed" +msgstr "" + +#: common/views.py:103 +msgid "Supplied value must be a boolean" +msgstr "" + #: company/forms.py:37 company/models.py:139 msgid "Default currency used for this company" msgstr "" @@ -1324,7 +1363,7 @@ msgid "Part packaging" msgstr "" #: company/templates/company/assigned_stock.html:9 -#: company/templates/company/tabs.html:25 templates/js/build.js:395 +#: company/templates/company/tabs.html:25 templates/js/build.js:411 msgid "Assigned Stock" msgstr "" @@ -1367,14 +1406,14 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:170 #: stock/templates/stock/item_base.html:287 templates/js/company.js:48 -#: templates/js/company.js:164 templates/js/order.js:155 +#: templates/js/company.js:164 templates/js/order.js:162 msgid "Supplier" msgstr "" #: company/templates/company/detail.html:62 #: order/templates/order/sales_order_base.html:81 stock/models.py:373 #: stock/models.py:374 stock/templates/stock/item_base.html:204 -#: templates/js/company.js:40 templates/js/order.js:237 +#: templates/js/company.js:40 templates/js/order.js:244 msgid "Customer" msgstr "" @@ -1389,7 +1428,7 @@ msgstr "" #: company/templates/company/detail_part.html:18 #: order/templates/order/purchase_order_detail.html:68 -#: part/templates/part/supplier.html:14 templates/js/stock.js:845 +#: part/templates/part/supplier.html:14 templates/js/stock.js:849 msgid "New Supplier Part" msgstr "" @@ -1413,7 +1452,7 @@ msgid "Delete Parts" msgstr "" #: company/templates/company/detail_part.html:63 -#: part/templates/part/category.html:116 templates/js/stock.js:839 +#: part/templates/part/category.html:116 templates/js/stock.js:843 msgid "New Part" msgstr "" @@ -1562,8 +1601,8 @@ msgstr "" msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part_pricing.html:17 company/views.py:459 -#: part/templates/part/sale_prices.html:14 part/views.py:2546 +#: company/templates/company/supplier_part_pricing.html:17 company/views.py:486 +#: part/templates/part/sale_prices.html:14 part/views.py:2555 msgid "Add Price Break" msgstr "" @@ -1608,7 +1647,7 @@ msgstr "" #: part/templates/part/cat_link.html:7 part/templates/part/category.html:94 #: part/templates/part/category_tabs.html:6 #: templates/InvenTree/settings/tabs.html:22 templates/navbar.html:19 -#: templates/stats.html:8 templates/stats.html:17 users/models.py:28 +#: templates/stats.html:35 templates/stats.html:44 users/models.py:28 msgid "Parts" msgstr "" @@ -1677,23 +1716,23 @@ msgstr "" msgid "Edit Supplier Part" msgstr "" -#: company/views.py:289 templates/js/stock.js:846 +#: company/views.py:295 templates/js/stock.js:850 msgid "Create new Supplier Part" msgstr "" -#: company/views.py:388 +#: company/views.py:415 msgid "Delete Supplier Part" msgstr "" -#: company/views.py:465 part/views.py:2552 +#: company/views.py:492 part/views.py:2561 msgid "Added new price break" msgstr "" -#: company/views.py:521 part/views.py:2596 +#: company/views.py:548 part/views.py:2605 msgid "Edit Price Break" msgstr "" -#: company/views.py:537 part/views.py:2612 +#: company/views.py:564 part/views.py:2621 msgid "Delete Price Break" msgstr "" @@ -1786,8 +1825,8 @@ msgstr "" msgid "Date order was completed" msgstr "" -#: order/models.py:187 order/models.py:269 part/views.py:1496 -#: stock/models.py:244 stock/models.py:811 +#: order/models.py:187 order/models.py:269 part/views.py:1494 +#: stock/models.py:244 stock/models.py:812 msgid "Quantity must be greater than zero" msgstr "" @@ -1825,7 +1864,7 @@ msgstr "" #: order/models.py:486 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:24 -#: stock/templates/stock/item_base.html:259 templates/js/order.js:139 +#: stock/templates/stock/item_base.html:259 templates/js/order.js:146 msgid "Purchase Order" msgstr "" @@ -1837,7 +1876,7 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:509 stock/models.py:457 +#: order/models.py:509 stock/models.py:458 #: stock/templates/stock/item_base.html:266 msgid "Purchase Price" msgstr "" @@ -1902,7 +1941,7 @@ msgstr "" msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:85 templates/js/order.js:162 +#: order/templates/order/order_base.html:85 templates/js/order.js:169 msgid "Supplier Reference" msgstr "" @@ -1934,11 +1973,11 @@ msgid "Step 1 of 2 - Select Part Suppliers" msgstr "" #: order/templates/order/order_wizard/select_parts.html:14 -msgid "Select suppliers." +msgid "Select suppliers" msgstr "" #: order/templates/order/order_wizard/select_parts.html:18 -msgid "No purchaseable parts selected." +msgid "No purchaseable parts selected" msgstr "" #: order/templates/order/order_wizard/select_parts.html:31 @@ -1958,7 +1997,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/order.js:186 templates/js/order.js:273 +#: templates/js/order.js:193 templates/js/order.js:280 msgid "Items" msgstr "" @@ -1996,7 +2035,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:39 #: order/templates/order/purchase_order_detail.html:119 #: part/templates/part/category.html:173 part/templates/part/category.html:215 -#: templates/js/stock.js:851 +#: templates/js/stock.js:855 msgid "New Location" msgstr "" @@ -2065,7 +2104,7 @@ msgstr "" msgid "Sales Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:87 templates/js/order.js:244 +#: order/templates/order/sales_order_base.html:87 templates/js/order.js:251 msgid "Customer Reference" msgstr "" @@ -2082,23 +2121,23 @@ msgstr "" #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:154 stock/models.py:378 -#: stock/templates/stock/item_base.html:191 templates/js/build.js:402 +#: stock/templates/stock/item_base.html:191 templates/js/build.js:418 msgid "Serial Number" msgstr "" -#: order/templates/order/sales_order_detail.html:96 templates/js/build.js:443 -#: templates/js/build.js:742 +#: order/templates/order/sales_order_detail.html:96 templates/js/build.js:459 +#: templates/js/build.js:769 msgid "Edit stock allocation" msgstr "" -#: order/templates/order/sales_order_detail.html:97 templates/js/build.js:445 -#: templates/js/build.js:743 +#: order/templates/order/sales_order_detail.html:97 templates/js/build.js:461 +#: templates/js/build.js:770 msgid "Delete stock allocation" msgstr "" #: order/templates/order/sales_order_detail.html:225 -#: part/templates/part/tabs.html:23 templates/js/build.js:507 -#: templates/js/build.js:738 +#: part/templates/part/tabs.html:23 templates/js/build.js:523 +#: templates/js/build.js:765 msgid "Allocated" msgstr "" @@ -2366,7 +2405,7 @@ msgstr "" msgid "Include part supplier data in exported BOM" msgstr "" -#: part/forms.py:92 part/models.py:1715 +#: part/forms.py:92 part/models.py:1717 msgid "Parent Part" msgstr "" @@ -2446,13 +2485,13 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:77 part/models.py:1760 +#: part/models.py:77 part/models.py:1762 #: part/templates/part/part_app_base.html:9 msgid "Part Category" msgstr "" #: part/models.py:78 part/templates/part/category.html:18 -#: part/templates/part/category.html:89 templates/stats.html:12 +#: part/templates/part/category.html:89 templates/stats.html:39 msgid "Part Categories" msgstr "" @@ -2530,7 +2569,7 @@ msgid "Stock keeping units for this part" msgstr "" #: part/models.py:737 part/templates/part/detail.html:158 -#: templates/js/table_filters.js:260 +#: templates/js/table_filters.js:264 msgid "Assembly" msgstr "" @@ -2556,7 +2595,7 @@ msgstr "" #: part/models.py:764 part/templates/part/detail.html:215 #: templates/js/table_filters.js:19 templates/js/table_filters.js:55 -#: templates/js/table_filters.js:186 templates/js/table_filters.js:243 +#: templates/js/table_filters.js:186 templates/js/table_filters.js:247 msgid "Active" msgstr "" @@ -2581,126 +2620,130 @@ msgstr "" msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1588 +#: part/models.py:1590 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:1605 +#: part/models.py:1607 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:1624 templates/js/part.js:567 templates/js/stock.js:92 +#: part/models.py:1626 templates/js/part.js:567 templates/js/stock.js:92 msgid "Test Name" msgstr "" -#: part/models.py:1625 +#: part/models.py:1627 msgid "Enter a name for the test" msgstr "" -#: part/models.py:1630 +#: part/models.py:1632 msgid "Test Description" msgstr "" -#: part/models.py:1631 +#: part/models.py:1633 msgid "Enter description for this test" msgstr "" -#: part/models.py:1636 templates/js/part.js:576 +#: part/models.py:1638 templates/js/part.js:576 #: templates/js/table_filters.js:172 msgid "Required" msgstr "" -#: part/models.py:1637 +#: part/models.py:1639 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:1642 templates/js/part.js:584 +#: part/models.py:1644 templates/js/part.js:584 msgid "Requires Value" msgstr "" -#: part/models.py:1643 +#: part/models.py:1645 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:1648 templates/js/part.js:591 +#: part/models.py:1650 templates/js/part.js:591 msgid "Requires Attachment" msgstr "" -#: part/models.py:1649 +#: part/models.py:1651 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:1682 +#: part/models.py:1684 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:1687 +#: part/models.py:1689 msgid "Parameter Name" msgstr "" -#: part/models.py:1689 +#: part/models.py:1691 msgid "Parameter Units" msgstr "" -#: part/models.py:1717 part/models.py:1765 +#: part/models.py:1719 part/models.py:1767 #: templates/InvenTree/settings/category.html:62 msgid "Parameter Template" msgstr "" -#: part/models.py:1719 +#: part/models.py:1721 msgid "Parameter Value" msgstr "" -#: part/models.py:1769 +#: part/models.py:1771 msgid "Default Parameter Value" msgstr "" -#: part/models.py:1799 +#: part/models.py:1801 msgid "Select parent part" msgstr "" -#: part/models.py:1807 +#: part/models.py:1809 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:1813 +#: part/models.py:1815 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:1815 +#: part/models.py:1817 msgid "This BOM item is optional" msgstr "" -#: part/models.py:1818 +#: part/models.py:1820 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:1821 +#: part/models.py:1823 msgid "BOM item reference" msgstr "" -#: part/models.py:1824 +#: part/models.py:1826 msgid "BOM item notes" msgstr "" -#: part/models.py:1826 +#: part/models.py:1828 msgid "BOM line checksum" msgstr "" -#: part/models.py:1893 part/views.py:1502 part/views.py:1554 +#: part/models.py:1899 part/views.py:1500 part/views.py:1552 #: stock/models.py:234 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:1909 +#: part/models.py:1908 part/models.py:1910 +msgid "Sub part must be specified" +msgstr "" + +#: part/models.py:1913 msgid "BOM Item" msgstr "" -#: part/models.py:2024 +#: part/models.py:2028 msgid "Select Related Part" msgstr "" -#: part/models.py:2056 +#: part/models.py:2060 msgid "" "Error creating relationship: check that the part is not related to itself " "and that the relationship is unique" @@ -2722,8 +2765,8 @@ msgstr "" #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:72 #: stock/templates/stock/item_base.html:274 -#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:724 -#: templates/js/stock.js:695 templates/js/stock.js:944 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:751 +#: templates/js/stock.js:699 templates/js/stock.js:948 msgid "Stock Item" msgstr "" @@ -2788,7 +2831,7 @@ msgstr "" msgid "Validate" msgstr "" -#: part/templates/part/bom.html:62 part/views.py:1793 +#: part/templates/part/bom.html:62 part/views.py:1791 msgid "Export Bill of Materials" msgstr "" @@ -2830,6 +2873,10 @@ msgstr "" msgid "Match Fields" msgstr "" +#: part/templates/part/bom_upload/select_fields.html:62 +msgid "Duplicate column selection" +msgstr "" + #: part/templates/part/bom_upload/select_parts.html:10 msgid "Step 3 - Select Parts" msgstr "" @@ -2884,7 +2931,7 @@ msgstr "" msgid "All parts" msgstr "" -#: part/templates/part/category.html:24 part/views.py:2184 +#: part/templates/part/category.html:24 part/views.py:2182 msgid "Create new part category" msgstr "" @@ -2956,7 +3003,7 @@ msgstr "" msgid "Create new Part Category" msgstr "" -#: part/templates/part/category.html:216 stock/views.py:1342 +#: part/templates/part/category.html:216 stock/views.py:1358 msgid "Create new Stock Location" msgstr "" @@ -3018,7 +3065,7 @@ msgstr "" msgid "Minimum Stock" msgstr "" -#: part/templates/part/detail.html:114 templates/js/order.js:263 +#: part/templates/part/detail.html:114 templates/js/order.js:270 msgid "Creation Date" msgstr "" @@ -3039,7 +3086,7 @@ msgid "Part is not a virtual part" msgstr "" #: part/templates/part/detail.html:148 stock/forms.py:249 -#: templates/js/table_filters.js:23 templates/js/table_filters.js:248 +#: templates/js/table_filters.js:23 templates/js/table_filters.js:252 msgid "Template" msgstr "" @@ -3113,7 +3160,7 @@ msgstr "" msgid "New Parameter" msgstr "" -#: part/templates/part/params.html:25 stock/models.py:1419 +#: part/templates/part/params.html:25 stock/models.py:1420 #: templates/js/stock.js:112 msgid "Value" msgstr "" @@ -3258,7 +3305,7 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/bom.js:224 +#: part/templates/part/stock_count.html:7 templates/js/bom.js:230 #: templates/js/part.js:442 msgid "No Stock" msgstr "" @@ -3392,7 +3439,7 @@ msgstr "" msgid "Possible matches exist - confirm creation of new part" msgstr "" -#: part/views.py:592 templates/js/stock.js:840 +#: part/views.py:592 templates/js/stock.js:844 msgid "Create New Part" msgstr "" @@ -3448,99 +3495,99 @@ msgstr "" msgid "No BOM file provided" msgstr "" -#: part/views.py:1505 +#: part/views.py:1503 msgid "Enter a valid quantity" msgstr "" -#: part/views.py:1530 part/views.py:1533 +#: part/views.py:1528 part/views.py:1531 msgid "Select valid part" msgstr "" -#: part/views.py:1539 +#: part/views.py:1537 msgid "Duplicate part selected" msgstr "" -#: part/views.py:1577 +#: part/views.py:1575 msgid "Select a part" msgstr "" -#: part/views.py:1583 +#: part/views.py:1581 msgid "Selected part creates a circular BOM" msgstr "" -#: part/views.py:1587 +#: part/views.py:1585 msgid "Specify quantity" msgstr "" -#: part/views.py:1843 +#: part/views.py:1841 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:1852 +#: part/views.py:1850 msgid "Part was deleted" msgstr "" -#: part/views.py:1861 +#: part/views.py:1859 msgid "Part Pricing" msgstr "" -#: part/views.py:1975 +#: part/views.py:1973 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:1985 +#: part/views.py:1983 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:1994 +#: part/views.py:1992 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:2004 +#: part/views.py:2002 msgid "Create Part Parameter" msgstr "" -#: part/views.py:2056 +#: part/views.py:2054 msgid "Edit Part Parameter" msgstr "" -#: part/views.py:2072 +#: part/views.py:2070 msgid "Delete Part Parameter" msgstr "" -#: part/views.py:2131 +#: part/views.py:2129 msgid "Edit Part Category" msgstr "" -#: part/views.py:2168 +#: part/views.py:2166 msgid "Delete Part Category" msgstr "" -#: part/views.py:2176 +#: part/views.py:2174 msgid "Part category was deleted" msgstr "" -#: part/views.py:2232 +#: part/views.py:2230 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:2335 +#: part/views.py:2333 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:2393 +#: part/views.py:2391 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:2418 +#: part/views.py:2416 msgid "Create BOM Item" msgstr "" -#: part/views.py:2486 +#: part/views.py:2488 msgid "Edit BOM item" msgstr "" -#: part/views.py:2536 +#: part/views.py:2545 msgid "Confim BOM item deletion" msgstr "" @@ -3564,11 +3611,11 @@ msgstr "" msgid "Part query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:227 +#: report/models.py:230 msgid "Report asset file" msgstr "" -#: report/models.py:230 +#: report/models.py:233 msgid "Asset file description" msgstr "" @@ -3624,7 +3671,7 @@ msgstr "" msgid "Add note (required)" msgstr "" -#: stock/forms.py:371 stock/views.py:920 stock/views.py:1118 +#: stock/forms.py:371 stock/views.py:935 stock/views.py:1133 msgid "Confirm stock adjustment" msgstr "" @@ -3742,125 +3789,125 @@ msgstr "" msgid "Stock Item Notes" msgstr "" -#: stock/models.py:458 +#: stock/models.py:459 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:509 +#: stock/models.py:510 msgid "Assigned to Customer" msgstr "" -#: stock/models.py:511 +#: stock/models.py:512 msgid "Manually assigned to customer" msgstr "" -#: stock/models.py:524 +#: stock/models.py:525 msgid "Returned from customer" msgstr "" -#: stock/models.py:526 +#: stock/models.py:527 msgid "Returned to location" msgstr "" -#: stock/models.py:651 +#: stock/models.py:652 msgid "Installed into stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:660 msgid "Installed stock item" msgstr "" -#: stock/models.py:683 +#: stock/models.py:684 msgid "Uninstalled stock item" msgstr "" -#: stock/models.py:702 +#: stock/models.py:703 msgid "Uninstalled into location" msgstr "" -#: stock/models.py:802 +#: stock/models.py:803 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:808 +#: stock/models.py:809 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:814 +#: stock/models.py:815 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:817 +#: stock/models.py:818 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:820 +#: stock/models.py:821 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:852 +#: stock/models.py:853 msgid "Add serial number" msgstr "" -#: stock/models.py:855 +#: stock/models.py:856 #, python-brace-format msgid "Serialized {n} items" msgstr "" -#: stock/models.py:966 +#: stock/models.py:967 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Tracking entry title" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1323 msgid "Entry notes" msgstr "" -#: stock/models.py:1324 +#: stock/models.py:1325 msgid "Link to external page for further information" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1385 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1391 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1407 +#: stock/models.py:1408 msgid "Test" msgstr "" -#: stock/models.py:1408 +#: stock/models.py:1409 msgid "Test name" msgstr "" -#: stock/models.py:1413 +#: stock/models.py:1414 msgid "Result" msgstr "" -#: stock/models.py:1414 templates/js/table_filters.js:162 +#: stock/models.py:1415 templates/js/table_filters.js:162 msgid "Test result" msgstr "" -#: stock/models.py:1420 +#: stock/models.py:1421 msgid "Test output value" msgstr "" -#: stock/models.py:1426 +#: stock/models.py:1427 msgid "Attachment" msgstr "" -#: stock/models.py:1427 +#: stock/models.py:1428 msgid "Test result attachment" msgstr "" -#: stock/models.py:1433 +#: stock/models.py:1434 msgid "Test notes" msgstr "" @@ -3953,7 +4000,7 @@ msgstr "" msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:138 templates/js/stock.js:981 +#: stock/templates/stock/item_base.html:138 templates/js/stock.js:985 msgid "Uninstall stock item" msgstr "" @@ -3990,7 +4037,7 @@ msgstr "" msgid "Stock Item Details" msgstr "" -#: stock/templates/stock/item_base.html:231 templates/js/build.js:426 +#: stock/templates/stock/item_base.html:231 templates/js/build.js:442 msgid "No location set" msgstr "" @@ -3998,7 +4045,7 @@ msgstr "" msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:252 templates/js/build.js:626 +#: stock/templates/stock/item_base.html:252 templates/js/build.js:642 #: templates/navbar.html:25 msgid "Build" msgstr "" @@ -4113,8 +4160,8 @@ msgstr "" #: stock/templates/stock/location.html:79 #: stock/templates/stock/location.html:94 -#: templates/InvenTree/search_stock_items.html:6 templates/stats.html:21 -#: templates/stats.html:30 +#: templates/InvenTree/search_stock_items.html:6 templates/stats.html:48 +#: templates/stats.html:57 msgid "Stock Items" msgstr "" @@ -4123,7 +4170,7 @@ msgid "Stock Details" msgstr "" #: stock/templates/stock/location.html:89 -#: templates/InvenTree/search_stock_location.html:6 templates/stats.html:25 +#: templates/InvenTree/search_stock_location.html:6 templates/stats.html:52 msgid "Stock Locations" msgstr "" @@ -4135,7 +4182,7 @@ msgstr "" msgid "The following stock items will be uninstalled" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:1314 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:1330 msgid "Convert Stock Item" msgstr "" @@ -4239,150 +4286,133 @@ msgstr "" msgid "Select Test Report Template" msgstr "" -#: stock/views.py:522 +#: stock/views.py:537 msgid "Select valid template" msgstr "" -#: stock/views.py:575 +#: stock/views.py:590 msgid "Stock Export Options" msgstr "" -#: stock/views.py:697 +#: stock/views.py:712 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:723 +#: stock/views.py:738 msgid "Install Stock Item" msgstr "" -#: stock/views.py:823 +#: stock/views.py:838 msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:931 +#: stock/views.py:946 msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:956 +#: stock/views.py:971 msgid "Adjust Stock" msgstr "" -#: stock/views.py:1066 +#: stock/views.py:1081 msgid "Move Stock Items" msgstr "" -#: stock/views.py:1067 +#: stock/views.py:1082 msgid "Count Stock Items" msgstr "" -#: stock/views.py:1068 +#: stock/views.py:1083 msgid "Remove From Stock" msgstr "" -#: stock/views.py:1069 +#: stock/views.py:1084 msgid "Add Stock Items" msgstr "" -#: stock/views.py:1070 +#: stock/views.py:1085 msgid "Delete Stock Items" msgstr "" -#: stock/views.py:1098 +#: stock/views.py:1113 msgid "Must enter integer value" msgstr "" -#: stock/views.py:1103 +#: stock/views.py:1118 msgid "Quantity must be positive" msgstr "" -#: stock/views.py:1110 +#: stock/views.py:1125 #, python-brace-format msgid "Quantity must not exceed {x}" msgstr "" -#: stock/views.py:1189 +#: stock/views.py:1204 #, python-brace-format msgid "Added stock to {n} items" msgstr "" -#: stock/views.py:1204 +#: stock/views.py:1219 #, python-brace-format msgid "Removed stock from {n} items" msgstr "" -#: stock/views.py:1217 +#: stock/views.py:1232 #, python-brace-format msgid "Counted stock for {n} items" msgstr "" -#: stock/views.py:1245 +#: stock/views.py:1260 msgid "No items were moved" msgstr "" -#: stock/views.py:1248 +#: stock/views.py:1263 #, python-brace-format msgid "Moved {n} items to {dest}" msgstr "" -#: stock/views.py:1267 +#: stock/views.py:1282 #, python-brace-format msgid "Deleted {n} stock items" msgstr "" -#: stock/views.py:1279 +#: stock/views.py:1294 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:1364 +#: stock/views.py:1380 msgid "Serialize Stock" msgstr "" -#: stock/views.py:1458 templates/js/build.js:210 +#: stock/views.py:1474 templates/js/build.js:210 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1559 +#: stock/views.py:1578 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:1634 -msgid "Invalid quantity" +#: stock/views.py:1650 +msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1637 -msgid "Quantity cannot be less than zero" -msgstr "" - -#: stock/views.py:1641 -msgid "Invalid part selection" -msgstr "" - -#: stock/views.py:1689 -#, python-brace-format -msgid "Created {n} new stock items" -msgstr "" - -#: stock/views.py:1708 stock/views.py:1724 -msgid "Created new stock item" -msgstr "" - -#: stock/views.py:1743 +#: stock/views.py:1736 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1757 +#: stock/views.py:1750 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1769 +#: stock/views.py:1762 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1788 +#: stock/views.py:1781 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1798 +#: stock/views.py:1791 msgid "Add Stock Tracking Entry" msgstr "" @@ -4406,6 +4436,10 @@ msgstr "" msgid "BOM Waiting Validation" msgstr "" +#: templates/InvenTree/build_overdue.html:7 +msgid "Overdue Builds" +msgstr "" + #: templates/InvenTree/build_pending.html:7 msgid "Pending Builds" msgstr "" @@ -4513,7 +4547,7 @@ msgid "Edit setting" msgstr "" #: templates/InvenTree/settings/settings.html:7 -#: templates/InvenTree/settings/settings.html:13 templates/navbar.html:62 +#: templates/InvenTree/settings/settings.html:13 templates/navbar.html:66 msgid "Settings" msgstr "" @@ -4605,34 +4639,30 @@ msgid "InvenTree Version Information" msgstr "" #: templates/about.html:21 -msgid "Instance Name" -msgstr "" - -#: templates/about.html:26 msgid "InvenTree Version" msgstr "" -#: templates/about.html:30 +#: templates/about.html:25 msgid "Django Version" msgstr "" -#: templates/about.html:34 +#: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/about.html:38 +#: templates/about.html:33 msgid "Commit Date" msgstr "" -#: templates/about.html:42 +#: templates/about.html:37 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:42 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:51 +#: templates/about.html:46 msgid "Submit Bug Report" msgstr "" @@ -4733,51 +4763,51 @@ msgstr "" msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/bom.js:159 +#: templates/js/bom.js:165 msgid "Open subassembly" msgstr "" -#: templates/js/bom.js:200 +#: templates/js/bom.js:206 msgid "Optional" msgstr "" -#: templates/js/bom.js:240 +#: templates/js/bom.js:252 msgid "No pricing available" msgstr "" -#: templates/js/bom.js:259 templates/js/build.js:555 +#: templates/js/bom.js:272 templates/js/build.js:571 msgid "Actions" msgstr "" -#: templates/js/bom.js:267 +#: templates/js/bom.js:280 msgid "Validate BOM Item" msgstr "" -#: templates/js/bom.js:269 +#: templates/js/bom.js:282 msgid "This line has been validated" msgstr "" -#: templates/js/bom.js:271 +#: templates/js/bom.js:284 msgid "Edit BOM Item" msgstr "" -#: templates/js/bom.js:273 +#: templates/js/bom.js:286 msgid "Delete BOM Item" msgstr "" -#: templates/js/bom.js:346 templates/js/build.js:289 +#: templates/js/bom.js:363 templates/js/build.js:305 msgid "No BOM items found" msgstr "" -#: templates/js/bom.js:491 +#: templates/js/bom.js:509 msgid "INACTIVE" msgstr "" -#: templates/js/bom.js:505 +#: templates/js/bom.js:523 msgid "Uses" msgstr "" -#: templates/js/bom.js:516 +#: templates/js/bom.js:534 msgid "No matching parts found" msgstr "" @@ -4801,31 +4831,35 @@ msgstr "" msgid "New Stock Item" msgstr "" -#: templates/js/build.js:477 +#: templates/js/build.js:493 msgid "Required Part" msgstr "" -#: templates/js/build.js:498 +#: templates/js/build.js:514 msgid "Quantity Per" msgstr "" -#: templates/js/build.js:562 +#: templates/js/build.js:578 msgid "Build stock" msgstr "" -#: templates/js/build.js:566 templates/stock_table.html:25 +#: templates/js/build.js:582 templates/stock_table.html:25 msgid "Order stock" msgstr "" -#: templates/js/build.js:569 +#: templates/js/build.js:585 msgid "Allocate stock" msgstr "" -#: templates/js/build.js:610 +#: templates/js/build.js:626 msgid "No builds matching query" msgstr "" -#: templates/js/build.js:720 +#: templates/js/build.js:656 +msgid "Build order is overdue" +msgstr "" + +#: templates/js/build.js:747 msgid "No parts allocated for" msgstr "" @@ -4857,19 +4891,19 @@ msgstr "" msgid "Link" msgstr "" -#: templates/js/order.js:128 +#: templates/js/order.js:135 msgid "No purchase orders found" msgstr "" -#: templates/js/order.js:181 templates/js/stock.js:677 +#: templates/js/order.js:188 templates/js/stock.js:681 msgid "Date" msgstr "" -#: templates/js/order.js:211 +#: templates/js/order.js:218 msgid "No sales orders found" msgstr "" -#: templates/js/order.js:268 +#: templates/js/order.js:275 msgid "Shipment Date" msgstr "" @@ -4898,7 +4932,7 @@ msgid "No parts found" msgstr "" #: templates/js/part.js:343 templates/js/stock.js:456 -#: templates/js/stock.js:1013 +#: templates/js/stock.js:1017 msgid "Select" msgstr "" @@ -4906,7 +4940,7 @@ msgstr "" msgid "No category" msgstr "" -#: templates/js/part.js:429 templates/js/table_filters.js:256 +#: templates/js/part.js:429 templates/js/table_filters.js:260 msgid "Low stock" msgstr "" @@ -5002,35 +5036,39 @@ msgstr "" msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/stock.js:541 +#: templates/js/stock.js:542 msgid "Stock item has been rejected" msgstr "" -#: templates/js/stock.js:545 +#: templates/js/stock.js:546 msgid "Stock item is lost" msgstr "" -#: templates/js/stock.js:549 templates/js/table_filters.js:106 +#: templates/js/stock.js:549 +msgid "Stock item is destroyed" +msgstr "" + +#: templates/js/stock.js:553 templates/js/table_filters.js:106 msgid "Depleted" msgstr "" -#: templates/js/stock.js:743 +#: templates/js/stock.js:747 msgid "No user information" msgstr "" -#: templates/js/stock.js:852 +#: templates/js/stock.js:856 msgid "Create New Location" msgstr "" -#: templates/js/stock.js:951 +#: templates/js/stock.js:955 msgid "Serial" msgstr "" -#: templates/js/stock.js:1044 templates/js/table_filters.js:121 +#: templates/js/stock.js:1048 templates/js/table_filters.js:121 msgid "Installed" msgstr "" -#: templates/js/stock.js:1069 +#: templates/js/stock.js:1073 msgid "Install item" msgstr "" @@ -5071,7 +5109,7 @@ msgstr "" msgid "Batch code" msgstr "" -#: templates/js/table_filters.js:91 templates/js/table_filters.js:223 +#: templates/js/table_filters.js:91 templates/js/table_filters.js:227 msgid "Active parts" msgstr "" @@ -5131,43 +5169,43 @@ msgstr "" msgid "Build status" msgstr "" -#: templates/js/table_filters.js:196 templates/js/table_filters.js:209 +#: templates/js/table_filters.js:200 templates/js/table_filters.js:213 msgid "Order status" msgstr "" -#: templates/js/table_filters.js:201 templates/js/table_filters.js:214 +#: templates/js/table_filters.js:205 templates/js/table_filters.js:218 msgid "Outstanding" msgstr "" -#: templates/js/table_filters.js:233 +#: templates/js/table_filters.js:237 msgid "Include subcategories" msgstr "" -#: templates/js/table_filters.js:234 +#: templates/js/table_filters.js:238 msgid "Include parts in subcategories" msgstr "" -#: templates/js/table_filters.js:238 +#: templates/js/table_filters.js:242 msgid "Has IPN" msgstr "" -#: templates/js/table_filters.js:239 +#: templates/js/table_filters.js:243 msgid "Part has internal part number" msgstr "" -#: templates/js/table_filters.js:244 +#: templates/js/table_filters.js:248 msgid "Show active parts" msgstr "" -#: templates/js/table_filters.js:252 +#: templates/js/table_filters.js:256 msgid "Stock available" msgstr "" -#: templates/js/table_filters.js:268 +#: templates/js/table_filters.js:272 msgid "Starred" msgstr "" -#: templates/js/table_filters.js:280 +#: templates/js/table_filters.js:284 msgid "Purchasable" msgstr "" @@ -5195,30 +5233,50 @@ msgstr "" msgid "Scan Barcode" msgstr "" -#: templates/navbar.html:59 users/models.py:27 +#: templates/navbar.html:57 +msgid "InvenTree server issues detected" +msgstr "" + +#: templates/navbar.html:63 users/models.py:27 msgid "Admin" msgstr "" -#: templates/navbar.html:63 +#: templates/navbar.html:67 msgid "Logout" msgstr "" -#: templates/navbar.html:65 +#: templates/navbar.html:69 msgid "Login" msgstr "" -#: templates/navbar.html:68 +#: templates/navbar.html:80 msgid "About InvenTree" msgstr "" -#: templates/navbar.html:69 -msgid "Statistics" -msgstr "" - #: templates/search_form.html:6 templates/search_form.html:8 msgid "Search" msgstr "" +#: templates/stats.html:9 +msgid "Server" +msgstr "" + +#: templates/stats.html:13 +msgid "Instance Name" +msgstr "" + +#: templates/stats.html:18 +msgid "Server status" +msgstr "" + +#: templates/stats.html:21 +msgid "Healthy" +msgstr "" + +#: templates/stats.html:23 +msgid "Issues detected" +msgstr "" + #: templates/stock_table.html:6 msgid "Export Stock Information" msgstr "" @@ -5263,19 +5321,19 @@ msgstr "" msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:120 +#: users/admin.py:178 msgid "The following users are members of multiple groups:" msgstr "" -#: users/admin.py:143 +#: users/admin.py:201 msgid "Personal info" msgstr "" -#: users/admin.py:144 +#: users/admin.py:202 msgid "Permissions" msgstr "" -#: users/admin.py:147 +#: users/admin.py:205 msgid "Important dates" msgstr "" diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po index f6cb0f4604..6f60f8ed93 100644 --- a/InvenTree/locale/es/LC_MESSAGES/django.po +++ b/InvenTree/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-11-12 22:05+1100\n" +"POT-Creation-Date: 2020-12-16 19:08+1100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,39 +18,40 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: InvenTree/api.py:85 +#: InvenTree/api.py:90 msgid "No action specified" msgstr "" -#: InvenTree/api.py:99 +#: InvenTree/api.py:104 msgid "No matching action found" msgstr "" -#: InvenTree/forms.py:108 build/forms.py:82 build/forms.py:170 +#: InvenTree/forms.py:110 build/forms.py:91 build/forms.py:179 msgid "Confirm" msgstr "" -#: InvenTree/forms.py:124 +#: InvenTree/forms.py:126 msgid "Confirm item deletion" msgstr "" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Enter new password" msgstr "" -#: InvenTree/forms.py:163 +#: InvenTree/forms.py:165 msgid "Confirm new password" msgstr "" -#: InvenTree/forms.py:198 +#: InvenTree/forms.py:200 msgid "Apply Theme" msgstr "" -#: InvenTree/forms.py:228 +#: InvenTree/forms.py:230 msgid "Select Category" msgstr "" #: InvenTree/helpers.py:361 order/models.py:189 order/models.py:271 +#: stock/views.py:1646 msgid "Invalid quantity provided" msgstr "" @@ -90,7 +91,7 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:68 templates/js/stock.js:734 +#: InvenTree/models.py:68 templates/js/stock.js:738 msgid "User" msgstr "" @@ -103,24 +104,32 @@ msgstr "" msgid "Description (optional)" msgstr "" -#: InvenTree/settings.py:354 +#: InvenTree/settings.py:422 msgid "English" msgstr "" -#: InvenTree/settings.py:355 +#: InvenTree/settings.py:423 msgid "German" msgstr "" -#: InvenTree/settings.py:356 +#: InvenTree/settings.py:424 msgid "French" msgstr "" -#: InvenTree/settings.py:357 +#: InvenTree/settings.py:425 msgid "Polish" msgstr "" +#: InvenTree/status.py:24 +msgid "Celery worker check failed" +msgstr "" + +#: InvenTree/status.py:27 +msgid "InvenTree system health checks failed" +msgstr "" + #: InvenTree/status_codes.py:94 InvenTree/status_codes.py:135 -#: InvenTree/status_codes.py:222 +#: InvenTree/status_codes.py:223 msgid "Pending" msgstr "" @@ -128,12 +137,12 @@ msgstr "" msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:96 InvenTree/status_codes.py:225 +#: InvenTree/status_codes.py:96 InvenTree/status_codes.py:226 msgid "Complete" msgstr "" #: InvenTree/status_codes.py:97 InvenTree/status_codes.py:137 -#: InvenTree/status_codes.py:224 +#: InvenTree/status_codes.py:225 msgid "Cancelled" msgstr "" @@ -172,7 +181,7 @@ msgstr "" msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:223 +#: InvenTree/status_codes.py:224 msgid "Production" msgstr "" @@ -210,28 +219,28 @@ msgstr "" msgid "Overage must be an integer value or a percentage" msgstr "" -#: InvenTree/views.py:494 +#: InvenTree/views.py:495 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:543 +#: InvenTree/views.py:544 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:558 templates/InvenTree/settings/user.html:18 +#: InvenTree/views.py:559 templates/InvenTree/settings/user.html:18 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:569 templates/InvenTree/settings/user.html:22 +#: InvenTree/views.py:570 templates/InvenTree/settings/user.html:22 msgid "Set Password" msgstr "" -#: InvenTree/views.py:588 +#: InvenTree/views.py:589 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:794 -msgid "Database Statistics" +#: InvenTree/views.py:795 templates/navbar.html:78 +msgid "System Information" msgstr "" #: barcode/api.py:53 barcode/api.py:150 @@ -278,9 +287,9 @@ msgstr "" msgid "Build Order reference" msgstr "" -#: build/forms.py:70 build/templates/build/auto_allocate.html:17 -#: build/templates/build/build_base.html:78 -#: build/templates/build/detail.html:29 common/models.py:488 +#: build/forms.py:79 build/templates/build/auto_allocate.html:17 +#: build/templates/build/build_base.html:83 +#: build/templates/build/detail.html:29 common/models.py:494 #: company/forms.py:112 company/templates/company/supplier_part_pricing.html:75 #: order/templates/order/order_wizard/select_parts.html:32 #: order/templates/order/purchase_order_detail.html:179 @@ -293,190 +302,199 @@ msgstr "" #: stock/templates/stock/item_base.html:46 #: stock/templates/stock/item_base.html:197 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:338 -#: templates/js/bom.js:189 templates/js/build.js:404 templates/js/stock.js:725 -#: templates/js/stock.js:953 +#: templates/js/bom.js:195 templates/js/build.js:420 templates/js/stock.js:729 +#: templates/js/stock.js:957 msgid "Quantity" msgstr "" -#: build/forms.py:71 +#: build/forms.py:80 msgid "Enter quantity for build output" msgstr "" -#: build/forms.py:75 stock/forms.py:111 +#: build/forms.py:84 stock/forms.py:111 msgid "Serial numbers" msgstr "" -#: build/forms.py:77 +#: build/forms.py:86 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/forms.py:83 +#: build/forms.py:92 msgid "Confirm creation of build outut" msgstr "" -#: build/forms.py:103 +#: build/forms.py:112 msgid "Confirm deletion of build output" msgstr "" -#: build/forms.py:124 +#: build/forms.py:133 msgid "Confirm unallocation of stock" msgstr "" -#: build/forms.py:148 +#: build/forms.py:157 msgid "Confirm stock allocation" msgstr "" -#: build/forms.py:171 +#: build/forms.py:180 msgid "Mark build as complete" msgstr "" -#: build/forms.py:195 +#: build/forms.py:204 msgid "Location of completed parts" msgstr "" -#: build/forms.py:200 +#: build/forms.py:209 msgid "Confirm completion with incomplete stock allocation" msgstr "" -#: build/forms.py:203 +#: build/forms.py:212 msgid "Confirm build completion" msgstr "" -#: build/forms.py:223 build/views.py:68 +#: build/forms.py:232 build/views.py:68 msgid "Confirm build cancellation" msgstr "" -#: build/forms.py:237 +#: build/forms.py:246 msgid "Select quantity of stock to allocate" msgstr "" -#: build/models.py:56 build/templates/build/build_base.html:8 +#: build/models.py:59 build/templates/build/build_base.html:8 #: build/templates/build/build_base.html:35 #: part/templates/part/allocation.html:20 msgid "Build Order" msgstr "" -#: build/models.py:57 build/templates/build/index.html:6 +#: build/models.py:60 build/templates/build/index.html:6 #: build/templates/build/index.html:14 order/templates/order/so_builds.html:11 #: order/templates/order/so_tabs.html:9 part/templates/part/tabs.html:31 #: templates/InvenTree/settings/tabs.html:28 users/models.py:30 msgid "Build Orders" msgstr "" -#: build/models.py:72 +#: build/models.py:75 msgid "Build Order Reference" msgstr "" -#: build/models.py:73 order/templates/order/purchase_order_detail.html:174 -#: templates/js/bom.js:181 templates/js/build.js:493 +#: build/models.py:76 order/templates/order/purchase_order_detail.html:174 +#: templates/js/bom.js:187 templates/js/build.js:509 msgid "Reference" msgstr "" -#: build/models.py:80 build/templates/build/detail.html:19 +#: build/models.py:83 build/templates/build/detail.html:19 #: company/templates/company/detail.html:23 #: company/templates/company/supplier_part_base.html:61 #: company/templates/company/supplier_part_detail.html:27 #: order/templates/order/purchase_order_detail.html:161 #: part/templates/part/detail.html:51 part/templates/part/set_category.html:14 -#: templates/InvenTree/search.html:147 templates/js/bom.js:174 -#: templates/js/bom.js:499 templates/js/build.js:642 templates/js/company.js:56 -#: templates/js/order.js:168 templates/js/order.js:250 templates/js/part.js:188 +#: templates/InvenTree/search.html:147 templates/js/bom.js:180 +#: templates/js/bom.js:517 templates/js/build.js:664 templates/js/company.js:56 +#: templates/js/order.js:175 templates/js/order.js:257 templates/js/part.js:188 #: templates/js/part.js:271 templates/js/part.js:391 templates/js/part.js:572 -#: templates/js/stock.js:494 templates/js/stock.js:706 +#: templates/js/stock.js:494 templates/js/stock.js:710 msgid "Description" msgstr "" -#: build/models.py:83 +#: build/models.py:86 msgid "Brief description of the build" msgstr "" -#: build/models.py:91 build/templates/build/build_base.html:94 +#: build/models.py:95 build/templates/build/build_base.html:104 #: build/templates/build/detail.html:75 msgid "Parent Build" msgstr "" -#: build/models.py:92 +#: build/models.py:96 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:97 build/templates/build/auto_allocate.html:16 -#: build/templates/build/build_base.html:73 +#: build/models.py:101 build/templates/build/auto_allocate.html:16 +#: build/templates/build/build_base.html:78 #: build/templates/build/detail.html:24 order/models.py:530 #: order/templates/order/order_wizard/select_parts.html:30 #: order/templates/order/purchase_order_detail.html:148 #: order/templates/order/receive_parts.html:19 part/models.py:315 #: part/templates/part/part_app_base.html:7 part/templates/part/related.html:26 #: part/templates/part/set_category.html:13 templates/InvenTree/search.html:133 -#: templates/js/barcode.js:336 templates/js/bom.js:147 templates/js/bom.js:484 -#: templates/js/build.js:647 templates/js/company.js:138 +#: templates/js/barcode.js:336 templates/js/bom.js:153 templates/js/bom.js:502 +#: templates/js/build.js:669 templates/js/company.js:138 #: templates/js/part.js:252 templates/js/part.js:357 templates/js/stock.js:468 -#: templates/js/stock.js:1025 +#: templates/js/stock.js:1029 msgid "Part" msgstr "" -#: build/models.py:105 +#: build/models.py:109 msgid "Select part to build" msgstr "" -#: build/models.py:110 +#: build/models.py:114 msgid "Sales Order Reference" msgstr "" -#: build/models.py:114 +#: build/models.py:118 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:119 +#: build/models.py:123 msgid "Source Location" msgstr "" -#: build/models.py:123 +#: build/models.py:127 msgid "" "Select location to take stock from for this build (leave blank to take from " "any stock location)" msgstr "" -#: build/models.py:128 +#: build/models.py:132 msgid "Destination Location" msgstr "" -#: build/models.py:132 +#: build/models.py:136 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:136 +#: build/models.py:140 msgid "Build Quantity" msgstr "" -#: build/models.py:139 +#: build/models.py:143 msgid "Number of stock items to build" msgstr "" -#: build/models.py:143 +#: build/models.py:147 msgid "Completed items" msgstr "" -#: build/models.py:145 +#: build/models.py:149 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:149 part/templates/part/part_base.html:155 +#: build/models.py:153 part/templates/part/part_base.html:155 msgid "Build Status" msgstr "" -#: build/models.py:153 +#: build/models.py:157 msgid "Build status code" msgstr "" -#: build/models.py:157 stock/models.py:390 +#: build/models.py:161 stock/models.py:390 msgid "Batch Code" msgstr "" -#: build/models.py:161 +#: build/models.py:165 msgid "Batch code for this build output" msgstr "" -#: build/models.py:176 build/templates/build/detail.html:89 +#: build/models.py:172 +msgid "Target completion date" +msgstr "" + +#: build/models.py:173 +msgid "" +"Target date for build completion. Build will be overdue after this date." +msgstr "" + +#: build/models.py:186 build/templates/build/detail.html:89 #: company/templates/company/supplier_part_base.html:68 #: company/templates/company/supplier_part_detail.html:24 #: part/templates/part/detail.html:80 part/templates/part/part_base.html:102 @@ -484,84 +502,84 @@ msgstr "" msgid "External Link" msgstr "" -#: build/models.py:177 part/models.py:672 stock/models.py:386 +#: build/models.py:187 part/models.py:672 stock/models.py:386 msgid "Link to external URL" msgstr "" -#: build/models.py:181 build/templates/build/tabs.html:23 company/models.py:344 +#: build/models.py:191 build/templates/build/tabs.html:23 company/models.py:344 #: company/templates/company/tabs.html:33 order/templates/order/po_tabs.html:18 #: order/templates/order/purchase_order_detail.html:213 #: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:73 #: stock/forms.py:307 stock/forms.py:339 stock/forms.py:367 stock/models.py:448 -#: stock/models.py:1432 stock/templates/stock/tabs.html:26 -#: templates/js/barcode.js:391 templates/js/bom.js:250 -#: templates/js/stock.js:116 templates/js/stock.js:578 +#: stock/models.py:1433 stock/templates/stock/tabs.html:26 +#: templates/js/barcode.js:391 templates/js/bom.js:263 +#: templates/js/stock.js:116 templates/js/stock.js:582 msgid "Notes" msgstr "" -#: build/models.py:182 +#: build/models.py:192 msgid "Extra build notes" msgstr "" -#: build/models.py:551 +#: build/models.py:577 msgid "No build output specified" msgstr "" -#: build/models.py:554 +#: build/models.py:580 msgid "Build output is already completed" msgstr "" -#: build/models.py:557 +#: build/models.py:583 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:632 +#: build/models.py:658 msgid "Completed build output" msgstr "" -#: build/models.py:870 +#: build/models.py:896 msgid "BuildItem must be unique for build, stock_item and install_into" msgstr "" -#: build/models.py:892 +#: build/models.py:918 msgid "Build item must specify a build output" msgstr "" -#: build/models.py:897 +#: build/models.py:923 #, python-brace-format msgid "Selected stock item not found in BOM for part '{p}'" msgstr "" -#: build/models.py:901 +#: build/models.py:927 #, python-brace-format msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "" -#: build/models.py:908 order/models.py:614 +#: build/models.py:934 order/models.py:614 msgid "StockItem is over-allocated" msgstr "" -#: build/models.py:912 order/models.py:617 +#: build/models.py:938 order/models.py:617 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:916 +#: build/models.py:942 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:956 +#: build/models.py:982 msgid "Build to allocate parts" msgstr "" -#: build/models.py:963 +#: build/models.py:989 msgid "Source stock item" msgstr "" -#: build/models.py:975 +#: build/models.py:1001 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:983 +#: build/models.py:1009 msgid "Destination stock item" msgstr "" @@ -591,7 +609,7 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/allocate.html:33 templates/js/build.js:574 +#: build/templates/build/allocate.html:33 templates/js/build.js:590 msgid "Unallocate stock" msgstr "" @@ -630,7 +648,7 @@ msgstr "" #: stock/templates/stock/item_base.html:227 #: stock/templates/stock/stock_adjust.html:17 #: templates/InvenTree/search.html:183 templates/js/barcode.js:337 -#: templates/js/build.js:418 templates/js/stock.js:570 +#: templates/js/build.js:434 templates/js/stock.js:574 msgid "Location" msgstr "" @@ -660,49 +678,58 @@ msgstr "" msgid "Admin view" msgstr "" -#: build/templates/build/build_base.html:46 +#: build/templates/build/build_base.html:43 +#: build/templates/build/build_base.html:92 templates/js/table_filters.js:190 +msgid "Overdue" +msgstr "" + +#: build/templates/build/build_base.html:51 msgid "Edit Build" msgstr "" -#: build/templates/build/build_base.html:50 +#: build/templates/build/build_base.html:55 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:53 build/views.py:58 +#: build/templates/build/build_base.html:58 build/views.py:58 msgid "Cancel Build" msgstr "" -#: build/templates/build/build_base.html:59 build/views.py:767 +#: build/templates/build/build_base.html:64 msgid "Delete Build" msgstr "" -#: build/templates/build/build_base.html:69 build/templates/build/detail.html:9 +#: build/templates/build/build_base.html:74 build/templates/build/detail.html:9 msgid "Build Details" msgstr "" -#: build/templates/build/build_base.html:83 +#: build/templates/build/build_base.html:88 #: build/templates/build/detail.html:57 #: order/templates/order/receive_parts.html:24 #: stock/templates/stock/item_base.html:312 templates/InvenTree/search.html:175 -#: templates/js/barcode.js:42 templates/js/build.js:675 -#: templates/js/order.js:173 templates/js/order.js:255 -#: templates/js/stock.js:557 templates/js/stock.js:961 +#: templates/js/barcode.js:42 templates/js/build.js:697 +#: templates/js/order.js:180 templates/js/order.js:262 +#: templates/js/stock.js:561 templates/js/stock.js:965 msgid "Status" msgstr "" -#: build/templates/build/build_base.html:88 +#: build/templates/build/build_base.html:92 +msgid "This build was due on" +msgstr "" + +#: build/templates/build/build_base.html:98 #: build/templates/build/detail.html:62 msgid "Progress" msgstr "" -#: build/templates/build/build_base.html:101 +#: build/templates/build/build_base.html:111 #: build/templates/build/detail.html:82 order/models.py:528 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:33 #: order/templates/order/sales_order_notes.html:10 #: order/templates/order/sales_order_ship.html:25 #: part/templates/part/allocation.html:27 -#: stock/templates/stock/item_base.html:221 templates/js/order.js:222 +#: stock/templates/stock/item_base.html:221 templates/js/order.js:229 msgid "Sales Order" msgstr "" @@ -803,35 +830,35 @@ msgid "Destination location not specified" msgstr "" #: build/templates/build/detail.html:68 -#: stock/templates/stock/item_base.html:245 templates/js/stock.js:565 -#: templates/js/stock.js:968 templates/js/table_filters.js:80 +#: stock/templates/stock/item_base.html:245 templates/js/stock.js:569 +#: templates/js/stock.js:972 templates/js/table_filters.js:80 #: templates/js/table_filters.js:151 msgid "Batch" msgstr "" #: build/templates/build/detail.html:95 #: order/templates/order/order_base.html:98 -#: order/templates/order/sales_order_base.html:100 templates/js/build.js:683 +#: order/templates/order/sales_order_base.html:100 templates/js/build.js:705 msgid "Created" msgstr "" -#: build/templates/build/detail.html:105 -msgid "BOM Price" +#: build/templates/build/detail.html:100 templates/js/build.js:710 +msgid "Target Date" msgstr "" -#: build/templates/build/detail.html:110 -msgid "BOM pricing is incomplete" +#: build/templates/build/detail.html:106 +msgid "No target date set" msgstr "" -#: build/templates/build/detail.html:113 -msgid "No pricing information" -msgstr "" - -#: build/templates/build/detail.html:120 templates/js/build.js:661 -#: templates/js/build.js:688 +#: build/templates/build/detail.html:111 templates/js/build.js:683 +#: templates/js/build.js:715 msgid "Completed" msgstr "" +#: build/templates/build/detail.html:115 +msgid "Build not complete" +msgstr "" + #: build/templates/build/edit_build_item.html:7 msgid "Alter the quantity of stock allocated to the build output" msgstr "" @@ -895,7 +922,7 @@ msgstr "" msgid "Create Build Output" msgstr "" -#: build/views.py:207 stock/models.py:827 stock/views.py:1660 +#: build/views.py:207 stock/models.py:828 stock/views.py:1667 msgid "Serial numbers already exist" msgstr "" @@ -956,13 +983,17 @@ msgid "Created new build" msgstr "" #: build/views.py:724 -msgid "Edit Build Details" +msgid "Edit Build Order Details" msgstr "" #: build/views.py:758 msgid "Edited build" msgstr "" +#: build/views.py:767 +msgid "Delete Build Order" +msgstr "" + #: build/views.py:784 msgid "Removed parts from build allocation" msgstr "" @@ -979,8 +1010,8 @@ msgstr "" msgid "Stock item is over-allocated" msgstr "" -#: build/views.py:847 templates/js/bom.js:215 templates/js/build.js:503 -#: templates/js/build.js:731 +#: build/views.py:847 templates/js/bom.js:221 templates/js/build.js:519 +#: templates/js/build.js:758 msgid "Available" msgstr "" @@ -1094,7 +1125,7 @@ msgid "Copy category parameter templates when creating a part" msgstr "" #: common/models.py:115 part/models.py:743 part/templates/part/detail.html:168 -#: templates/js/table_filters.js:264 +#: templates/js/table_filters.js:268 msgid "Component" msgstr "" @@ -1111,7 +1142,7 @@ msgid "Parts are purchaseable by default" msgstr "" #: common/models.py:129 part/models.py:759 part/templates/part/detail.html:198 -#: templates/js/table_filters.js:272 +#: templates/js/table_filters.js:276 msgid "Salable" msgstr "" @@ -1120,7 +1151,7 @@ msgid "Parts are salable by default" msgstr "" #: common/models.py:136 part/models.py:749 part/templates/part/detail.html:178 -#: templates/js/table_filters.js:31 templates/js/table_filters.js:276 +#: templates/js/table_filters.js:31 templates/js/table_filters.js:280 msgid "Trackable" msgstr "" @@ -1160,36 +1191,36 @@ msgstr "" msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:373 +#: common/models.py:376 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:375 +#: common/models.py:378 msgid "Settings value" msgstr "" -#: common/models.py:431 +#: common/models.py:437 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:445 +#: common/models.py:451 msgid "Key string must be unique" msgstr "" -#: common/models.py:489 company/forms.py:113 +#: common/models.py:495 company/forms.py:113 msgid "Price break quantity" msgstr "" -#: common/models.py:497 company/templates/company/supplier_part_pricing.html:80 -#: part/templates/part/sale_prices.html:87 templates/js/bom.js:234 +#: common/models.py:503 company/templates/company/supplier_part_pricing.html:80 +#: part/templates/part/sale_prices.html:87 templates/js/bom.js:246 msgid "Price" msgstr "" -#: common/models.py:498 +#: common/models.py:504 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:521 +#: common/models.py:527 msgid "Default" msgstr "" @@ -1201,6 +1232,14 @@ msgstr "" msgid "Change Setting" msgstr "" +#: common/views.py:94 +msgid "Supplied value is not allowed" +msgstr "" + +#: common/views.py:103 +msgid "Supplied value must be a boolean" +msgstr "" + #: company/forms.py:37 company/models.py:139 msgid "Default currency used for this company" msgstr "" @@ -1324,7 +1363,7 @@ msgid "Part packaging" msgstr "" #: company/templates/company/assigned_stock.html:9 -#: company/templates/company/tabs.html:25 templates/js/build.js:395 +#: company/templates/company/tabs.html:25 templates/js/build.js:411 msgid "Assigned Stock" msgstr "" @@ -1367,14 +1406,14 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:170 #: stock/templates/stock/item_base.html:287 templates/js/company.js:48 -#: templates/js/company.js:164 templates/js/order.js:155 +#: templates/js/company.js:164 templates/js/order.js:162 msgid "Supplier" msgstr "" #: company/templates/company/detail.html:62 #: order/templates/order/sales_order_base.html:81 stock/models.py:373 #: stock/models.py:374 stock/templates/stock/item_base.html:204 -#: templates/js/company.js:40 templates/js/order.js:237 +#: templates/js/company.js:40 templates/js/order.js:244 msgid "Customer" msgstr "" @@ -1389,7 +1428,7 @@ msgstr "" #: company/templates/company/detail_part.html:18 #: order/templates/order/purchase_order_detail.html:68 -#: part/templates/part/supplier.html:14 templates/js/stock.js:845 +#: part/templates/part/supplier.html:14 templates/js/stock.js:849 msgid "New Supplier Part" msgstr "" @@ -1413,7 +1452,7 @@ msgid "Delete Parts" msgstr "" #: company/templates/company/detail_part.html:63 -#: part/templates/part/category.html:116 templates/js/stock.js:839 +#: part/templates/part/category.html:116 templates/js/stock.js:843 msgid "New Part" msgstr "" @@ -1562,8 +1601,8 @@ msgstr "" msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part_pricing.html:17 company/views.py:459 -#: part/templates/part/sale_prices.html:14 part/views.py:2546 +#: company/templates/company/supplier_part_pricing.html:17 company/views.py:486 +#: part/templates/part/sale_prices.html:14 part/views.py:2555 msgid "Add Price Break" msgstr "" @@ -1608,7 +1647,7 @@ msgstr "" #: part/templates/part/cat_link.html:7 part/templates/part/category.html:94 #: part/templates/part/category_tabs.html:6 #: templates/InvenTree/settings/tabs.html:22 templates/navbar.html:19 -#: templates/stats.html:8 templates/stats.html:17 users/models.py:28 +#: templates/stats.html:35 templates/stats.html:44 users/models.py:28 msgid "Parts" msgstr "" @@ -1677,23 +1716,23 @@ msgstr "" msgid "Edit Supplier Part" msgstr "" -#: company/views.py:289 templates/js/stock.js:846 +#: company/views.py:295 templates/js/stock.js:850 msgid "Create new Supplier Part" msgstr "" -#: company/views.py:388 +#: company/views.py:415 msgid "Delete Supplier Part" msgstr "" -#: company/views.py:465 part/views.py:2552 +#: company/views.py:492 part/views.py:2561 msgid "Added new price break" msgstr "" -#: company/views.py:521 part/views.py:2596 +#: company/views.py:548 part/views.py:2605 msgid "Edit Price Break" msgstr "" -#: company/views.py:537 part/views.py:2612 +#: company/views.py:564 part/views.py:2621 msgid "Delete Price Break" msgstr "" @@ -1786,8 +1825,8 @@ msgstr "" msgid "Date order was completed" msgstr "" -#: order/models.py:187 order/models.py:269 part/views.py:1496 -#: stock/models.py:244 stock/models.py:811 +#: order/models.py:187 order/models.py:269 part/views.py:1494 +#: stock/models.py:244 stock/models.py:812 msgid "Quantity must be greater than zero" msgstr "" @@ -1825,7 +1864,7 @@ msgstr "" #: order/models.py:486 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:24 -#: stock/templates/stock/item_base.html:259 templates/js/order.js:139 +#: stock/templates/stock/item_base.html:259 templates/js/order.js:146 msgid "Purchase Order" msgstr "" @@ -1837,7 +1876,7 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:509 stock/models.py:457 +#: order/models.py:509 stock/models.py:458 #: stock/templates/stock/item_base.html:266 msgid "Purchase Price" msgstr "" @@ -1902,7 +1941,7 @@ msgstr "" msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:85 templates/js/order.js:162 +#: order/templates/order/order_base.html:85 templates/js/order.js:169 msgid "Supplier Reference" msgstr "" @@ -1934,11 +1973,11 @@ msgid "Step 1 of 2 - Select Part Suppliers" msgstr "" #: order/templates/order/order_wizard/select_parts.html:14 -msgid "Select suppliers." +msgid "Select suppliers" msgstr "" #: order/templates/order/order_wizard/select_parts.html:18 -msgid "No purchaseable parts selected." +msgid "No purchaseable parts selected" msgstr "" #: order/templates/order/order_wizard/select_parts.html:31 @@ -1958,7 +1997,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: templates/js/order.js:186 templates/js/order.js:273 +#: templates/js/order.js:193 templates/js/order.js:280 msgid "Items" msgstr "" @@ -1996,7 +2035,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:39 #: order/templates/order/purchase_order_detail.html:119 #: part/templates/part/category.html:173 part/templates/part/category.html:215 -#: templates/js/stock.js:851 +#: templates/js/stock.js:855 msgid "New Location" msgstr "" @@ -2065,7 +2104,7 @@ msgstr "" msgid "Sales Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:87 templates/js/order.js:244 +#: order/templates/order/sales_order_base.html:87 templates/js/order.js:251 msgid "Customer Reference" msgstr "" @@ -2082,23 +2121,23 @@ msgstr "" #: order/templates/order/sales_order_detail.html:72 #: order/templates/order/sales_order_detail.html:154 stock/models.py:378 -#: stock/templates/stock/item_base.html:191 templates/js/build.js:402 +#: stock/templates/stock/item_base.html:191 templates/js/build.js:418 msgid "Serial Number" msgstr "" -#: order/templates/order/sales_order_detail.html:96 templates/js/build.js:443 -#: templates/js/build.js:742 +#: order/templates/order/sales_order_detail.html:96 templates/js/build.js:459 +#: templates/js/build.js:769 msgid "Edit stock allocation" msgstr "" -#: order/templates/order/sales_order_detail.html:97 templates/js/build.js:445 -#: templates/js/build.js:743 +#: order/templates/order/sales_order_detail.html:97 templates/js/build.js:461 +#: templates/js/build.js:770 msgid "Delete stock allocation" msgstr "" #: order/templates/order/sales_order_detail.html:225 -#: part/templates/part/tabs.html:23 templates/js/build.js:507 -#: templates/js/build.js:738 +#: part/templates/part/tabs.html:23 templates/js/build.js:523 +#: templates/js/build.js:765 msgid "Allocated" msgstr "" @@ -2366,7 +2405,7 @@ msgstr "" msgid "Include part supplier data in exported BOM" msgstr "" -#: part/forms.py:92 part/models.py:1715 +#: part/forms.py:92 part/models.py:1717 msgid "Parent Part" msgstr "" @@ -2446,13 +2485,13 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:77 part/models.py:1760 +#: part/models.py:77 part/models.py:1762 #: part/templates/part/part_app_base.html:9 msgid "Part Category" msgstr "" #: part/models.py:78 part/templates/part/category.html:18 -#: part/templates/part/category.html:89 templates/stats.html:12 +#: part/templates/part/category.html:89 templates/stats.html:39 msgid "Part Categories" msgstr "" @@ -2530,7 +2569,7 @@ msgid "Stock keeping units for this part" msgstr "" #: part/models.py:737 part/templates/part/detail.html:158 -#: templates/js/table_filters.js:260 +#: templates/js/table_filters.js:264 msgid "Assembly" msgstr "" @@ -2556,7 +2595,7 @@ msgstr "" #: part/models.py:764 part/templates/part/detail.html:215 #: templates/js/table_filters.js:19 templates/js/table_filters.js:55 -#: templates/js/table_filters.js:186 templates/js/table_filters.js:243 +#: templates/js/table_filters.js:186 templates/js/table_filters.js:247 msgid "Active" msgstr "" @@ -2581,126 +2620,130 @@ msgstr "" msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1588 +#: part/models.py:1590 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:1605 +#: part/models.py:1607 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:1624 templates/js/part.js:567 templates/js/stock.js:92 +#: part/models.py:1626 templates/js/part.js:567 templates/js/stock.js:92 msgid "Test Name" msgstr "" -#: part/models.py:1625 +#: part/models.py:1627 msgid "Enter a name for the test" msgstr "" -#: part/models.py:1630 +#: part/models.py:1632 msgid "Test Description" msgstr "" -#: part/models.py:1631 +#: part/models.py:1633 msgid "Enter description for this test" msgstr "" -#: part/models.py:1636 templates/js/part.js:576 +#: part/models.py:1638 templates/js/part.js:576 #: templates/js/table_filters.js:172 msgid "Required" msgstr "" -#: part/models.py:1637 +#: part/models.py:1639 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:1642 templates/js/part.js:584 +#: part/models.py:1644 templates/js/part.js:584 msgid "Requires Value" msgstr "" -#: part/models.py:1643 +#: part/models.py:1645 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:1648 templates/js/part.js:591 +#: part/models.py:1650 templates/js/part.js:591 msgid "Requires Attachment" msgstr "" -#: part/models.py:1649 +#: part/models.py:1651 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:1682 +#: part/models.py:1684 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:1687 +#: part/models.py:1689 msgid "Parameter Name" msgstr "" -#: part/models.py:1689 +#: part/models.py:1691 msgid "Parameter Units" msgstr "" -#: part/models.py:1717 part/models.py:1765 +#: part/models.py:1719 part/models.py:1767 #: templates/InvenTree/settings/category.html:62 msgid "Parameter Template" msgstr "" -#: part/models.py:1719 +#: part/models.py:1721 msgid "Parameter Value" msgstr "" -#: part/models.py:1769 +#: part/models.py:1771 msgid "Default Parameter Value" msgstr "" -#: part/models.py:1799 +#: part/models.py:1801 msgid "Select parent part" msgstr "" -#: part/models.py:1807 +#: part/models.py:1809 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:1813 +#: part/models.py:1815 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:1815 +#: part/models.py:1817 msgid "This BOM item is optional" msgstr "" -#: part/models.py:1818 +#: part/models.py:1820 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:1821 +#: part/models.py:1823 msgid "BOM item reference" msgstr "" -#: part/models.py:1824 +#: part/models.py:1826 msgid "BOM item notes" msgstr "" -#: part/models.py:1826 +#: part/models.py:1828 msgid "BOM line checksum" msgstr "" -#: part/models.py:1893 part/views.py:1502 part/views.py:1554 +#: part/models.py:1899 part/views.py:1500 part/views.py:1552 #: stock/models.py:234 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:1909 +#: part/models.py:1908 part/models.py:1910 +msgid "Sub part must be specified" +msgstr "" + +#: part/models.py:1913 msgid "BOM Item" msgstr "" -#: part/models.py:2024 +#: part/models.py:2028 msgid "Select Related Part" msgstr "" -#: part/models.py:2056 +#: part/models.py:2060 msgid "" "Error creating relationship: check that the part is not related to itself " "and that the relationship is unique" @@ -2722,8 +2765,8 @@ msgstr "" #: stock/templates/stock/item_base.html:8 #: stock/templates/stock/item_base.html:72 #: stock/templates/stock/item_base.html:274 -#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:724 -#: templates/js/stock.js:695 templates/js/stock.js:944 +#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:751 +#: templates/js/stock.js:699 templates/js/stock.js:948 msgid "Stock Item" msgstr "" @@ -2788,7 +2831,7 @@ msgstr "" msgid "Validate" msgstr "" -#: part/templates/part/bom.html:62 part/views.py:1793 +#: part/templates/part/bom.html:62 part/views.py:1791 msgid "Export Bill of Materials" msgstr "" @@ -2830,6 +2873,10 @@ msgstr "" msgid "Match Fields" msgstr "" +#: part/templates/part/bom_upload/select_fields.html:62 +msgid "Duplicate column selection" +msgstr "" + #: part/templates/part/bom_upload/select_parts.html:10 msgid "Step 3 - Select Parts" msgstr "" @@ -2884,7 +2931,7 @@ msgstr "" msgid "All parts" msgstr "" -#: part/templates/part/category.html:24 part/views.py:2184 +#: part/templates/part/category.html:24 part/views.py:2182 msgid "Create new part category" msgstr "" @@ -2956,7 +3003,7 @@ msgstr "" msgid "Create new Part Category" msgstr "" -#: part/templates/part/category.html:216 stock/views.py:1342 +#: part/templates/part/category.html:216 stock/views.py:1358 msgid "Create new Stock Location" msgstr "" @@ -3018,7 +3065,7 @@ msgstr "" msgid "Minimum Stock" msgstr "" -#: part/templates/part/detail.html:114 templates/js/order.js:263 +#: part/templates/part/detail.html:114 templates/js/order.js:270 msgid "Creation Date" msgstr "" @@ -3039,7 +3086,7 @@ msgid "Part is not a virtual part" msgstr "" #: part/templates/part/detail.html:148 stock/forms.py:249 -#: templates/js/table_filters.js:23 templates/js/table_filters.js:248 +#: templates/js/table_filters.js:23 templates/js/table_filters.js:252 msgid "Template" msgstr "" @@ -3113,7 +3160,7 @@ msgstr "" msgid "New Parameter" msgstr "" -#: part/templates/part/params.html:25 stock/models.py:1419 +#: part/templates/part/params.html:25 stock/models.py:1420 #: templates/js/stock.js:112 msgid "Value" msgstr "" @@ -3258,7 +3305,7 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/bom.js:224 +#: part/templates/part/stock_count.html:7 templates/js/bom.js:230 #: templates/js/part.js:442 msgid "No Stock" msgstr "" @@ -3392,7 +3439,7 @@ msgstr "" msgid "Possible matches exist - confirm creation of new part" msgstr "" -#: part/views.py:592 templates/js/stock.js:840 +#: part/views.py:592 templates/js/stock.js:844 msgid "Create New Part" msgstr "" @@ -3448,99 +3495,99 @@ msgstr "" msgid "No BOM file provided" msgstr "" -#: part/views.py:1505 +#: part/views.py:1503 msgid "Enter a valid quantity" msgstr "" -#: part/views.py:1530 part/views.py:1533 +#: part/views.py:1528 part/views.py:1531 msgid "Select valid part" msgstr "" -#: part/views.py:1539 +#: part/views.py:1537 msgid "Duplicate part selected" msgstr "" -#: part/views.py:1577 +#: part/views.py:1575 msgid "Select a part" msgstr "" -#: part/views.py:1583 +#: part/views.py:1581 msgid "Selected part creates a circular BOM" msgstr "" -#: part/views.py:1587 +#: part/views.py:1585 msgid "Specify quantity" msgstr "" -#: part/views.py:1843 +#: part/views.py:1841 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:1852 +#: part/views.py:1850 msgid "Part was deleted" msgstr "" -#: part/views.py:1861 +#: part/views.py:1859 msgid "Part Pricing" msgstr "" -#: part/views.py:1975 +#: part/views.py:1973 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:1985 +#: part/views.py:1983 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:1994 +#: part/views.py:1992 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:2004 +#: part/views.py:2002 msgid "Create Part Parameter" msgstr "" -#: part/views.py:2056 +#: part/views.py:2054 msgid "Edit Part Parameter" msgstr "" -#: part/views.py:2072 +#: part/views.py:2070 msgid "Delete Part Parameter" msgstr "" -#: part/views.py:2131 +#: part/views.py:2129 msgid "Edit Part Category" msgstr "" -#: part/views.py:2168 +#: part/views.py:2166 msgid "Delete Part Category" msgstr "" -#: part/views.py:2176 +#: part/views.py:2174 msgid "Part category was deleted" msgstr "" -#: part/views.py:2232 +#: part/views.py:2230 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:2335 +#: part/views.py:2333 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:2393 +#: part/views.py:2391 msgid "Delete Category Parameter Template" msgstr "" -#: part/views.py:2418 +#: part/views.py:2416 msgid "Create BOM Item" msgstr "" -#: part/views.py:2486 +#: part/views.py:2488 msgid "Edit BOM item" msgstr "" -#: part/views.py:2536 +#: part/views.py:2545 msgid "Confim BOM item deletion" msgstr "" @@ -3564,11 +3611,11 @@ msgstr "" msgid "Part query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:227 +#: report/models.py:230 msgid "Report asset file" msgstr "" -#: report/models.py:230 +#: report/models.py:233 msgid "Asset file description" msgstr "" @@ -3624,7 +3671,7 @@ msgstr "" msgid "Add note (required)" msgstr "" -#: stock/forms.py:371 stock/views.py:920 stock/views.py:1118 +#: stock/forms.py:371 stock/views.py:935 stock/views.py:1133 msgid "Confirm stock adjustment" msgstr "" @@ -3742,125 +3789,125 @@ msgstr "" msgid "Stock Item Notes" msgstr "" -#: stock/models.py:458 +#: stock/models.py:459 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:509 +#: stock/models.py:510 msgid "Assigned to Customer" msgstr "" -#: stock/models.py:511 +#: stock/models.py:512 msgid "Manually assigned to customer" msgstr "" -#: stock/models.py:524 +#: stock/models.py:525 msgid "Returned from customer" msgstr "" -#: stock/models.py:526 +#: stock/models.py:527 msgid "Returned to location" msgstr "" -#: stock/models.py:651 +#: stock/models.py:652 msgid "Installed into stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:660 msgid "Installed stock item" msgstr "" -#: stock/models.py:683 +#: stock/models.py:684 msgid "Uninstalled stock item" msgstr "" -#: stock/models.py:702 +#: stock/models.py:703 msgid "Uninstalled into location" msgstr "" -#: stock/models.py:802 +#: stock/models.py:803 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:808 +#: stock/models.py:809 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:814 +#: stock/models.py:815 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:817 +#: stock/models.py:818 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:820 +#: stock/models.py:821 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:852 +#: stock/models.py:853 msgid "Add serial number" msgstr "" -#: stock/models.py:855 +#: stock/models.py:856 #, python-brace-format msgid "Serialized {n} items" msgstr "" -#: stock/models.py:966 +#: stock/models.py:967 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Tracking entry title" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1323 msgid "Entry notes" msgstr "" -#: stock/models.py:1324 +#: stock/models.py:1325 msgid "Link to external page for further information" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1385 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1391 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:1407 +#: stock/models.py:1408 msgid "Test" msgstr "" -#: stock/models.py:1408 +#: stock/models.py:1409 msgid "Test name" msgstr "" -#: stock/models.py:1413 +#: stock/models.py:1414 msgid "Result" msgstr "" -#: stock/models.py:1414 templates/js/table_filters.js:162 +#: stock/models.py:1415 templates/js/table_filters.js:162 msgid "Test result" msgstr "" -#: stock/models.py:1420 +#: stock/models.py:1421 msgid "Test output value" msgstr "" -#: stock/models.py:1426 +#: stock/models.py:1427 msgid "Attachment" msgstr "" -#: stock/models.py:1427 +#: stock/models.py:1428 msgid "Test result attachment" msgstr "" -#: stock/models.py:1433 +#: stock/models.py:1434 msgid "Test notes" msgstr "" @@ -3953,7 +4000,7 @@ msgstr "" msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:138 templates/js/stock.js:981 +#: stock/templates/stock/item_base.html:138 templates/js/stock.js:985 msgid "Uninstall stock item" msgstr "" @@ -3990,7 +4037,7 @@ msgstr "" msgid "Stock Item Details" msgstr "" -#: stock/templates/stock/item_base.html:231 templates/js/build.js:426 +#: stock/templates/stock/item_base.html:231 templates/js/build.js:442 msgid "No location set" msgstr "" @@ -3998,7 +4045,7 @@ msgstr "" msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:252 templates/js/build.js:626 +#: stock/templates/stock/item_base.html:252 templates/js/build.js:642 #: templates/navbar.html:25 msgid "Build" msgstr "" @@ -4113,8 +4160,8 @@ msgstr "" #: stock/templates/stock/location.html:79 #: stock/templates/stock/location.html:94 -#: templates/InvenTree/search_stock_items.html:6 templates/stats.html:21 -#: templates/stats.html:30 +#: templates/InvenTree/search_stock_items.html:6 templates/stats.html:48 +#: templates/stats.html:57 msgid "Stock Items" msgstr "" @@ -4123,7 +4170,7 @@ msgid "Stock Details" msgstr "" #: stock/templates/stock/location.html:89 -#: templates/InvenTree/search_stock_location.html:6 templates/stats.html:25 +#: templates/InvenTree/search_stock_location.html:6 templates/stats.html:52 msgid "Stock Locations" msgstr "" @@ -4135,7 +4182,7 @@ msgstr "" msgid "The following stock items will be uninstalled" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:1314 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:1330 msgid "Convert Stock Item" msgstr "" @@ -4239,150 +4286,133 @@ msgstr "" msgid "Select Test Report Template" msgstr "" -#: stock/views.py:522 +#: stock/views.py:537 msgid "Select valid template" msgstr "" -#: stock/views.py:575 +#: stock/views.py:590 msgid "Stock Export Options" msgstr "" -#: stock/views.py:697 +#: stock/views.py:712 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:723 +#: stock/views.py:738 msgid "Install Stock Item" msgstr "" -#: stock/views.py:823 +#: stock/views.py:838 msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:931 +#: stock/views.py:946 msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:956 +#: stock/views.py:971 msgid "Adjust Stock" msgstr "" -#: stock/views.py:1066 +#: stock/views.py:1081 msgid "Move Stock Items" msgstr "" -#: stock/views.py:1067 +#: stock/views.py:1082 msgid "Count Stock Items" msgstr "" -#: stock/views.py:1068 +#: stock/views.py:1083 msgid "Remove From Stock" msgstr "" -#: stock/views.py:1069 +#: stock/views.py:1084 msgid "Add Stock Items" msgstr "" -#: stock/views.py:1070 +#: stock/views.py:1085 msgid "Delete Stock Items" msgstr "" -#: stock/views.py:1098 +#: stock/views.py:1113 msgid "Must enter integer value" msgstr "" -#: stock/views.py:1103 +#: stock/views.py:1118 msgid "Quantity must be positive" msgstr "" -#: stock/views.py:1110 +#: stock/views.py:1125 #, python-brace-format msgid "Quantity must not exceed {x}" msgstr "" -#: stock/views.py:1189 +#: stock/views.py:1204 #, python-brace-format msgid "Added stock to {n} items" msgstr "" -#: stock/views.py:1204 +#: stock/views.py:1219 #, python-brace-format msgid "Removed stock from {n} items" msgstr "" -#: stock/views.py:1217 +#: stock/views.py:1232 #, python-brace-format msgid "Counted stock for {n} items" msgstr "" -#: stock/views.py:1245 +#: stock/views.py:1260 msgid "No items were moved" msgstr "" -#: stock/views.py:1248 +#: stock/views.py:1263 #, python-brace-format msgid "Moved {n} items to {dest}" msgstr "" -#: stock/views.py:1267 +#: stock/views.py:1282 #, python-brace-format msgid "Deleted {n} stock items" msgstr "" -#: stock/views.py:1279 +#: stock/views.py:1294 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:1364 +#: stock/views.py:1380 msgid "Serialize Stock" msgstr "" -#: stock/views.py:1458 templates/js/build.js:210 +#: stock/views.py:1474 templates/js/build.js:210 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:1559 +#: stock/views.py:1578 msgid "Duplicate Stock Item" msgstr "" -#: stock/views.py:1634 -msgid "Invalid quantity" +#: stock/views.py:1650 +msgid "Quantity cannot be negative" msgstr "" -#: stock/views.py:1637 -msgid "Quantity cannot be less than zero" -msgstr "" - -#: stock/views.py:1641 -msgid "Invalid part selection" -msgstr "" - -#: stock/views.py:1689 -#, python-brace-format -msgid "Created {n} new stock items" -msgstr "" - -#: stock/views.py:1708 stock/views.py:1724 -msgid "Created new stock item" -msgstr "" - -#: stock/views.py:1743 +#: stock/views.py:1736 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1757 +#: stock/views.py:1750 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1769 +#: stock/views.py:1762 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1788 +#: stock/views.py:1781 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1798 +#: stock/views.py:1791 msgid "Add Stock Tracking Entry" msgstr "" @@ -4406,6 +4436,10 @@ msgstr "" msgid "BOM Waiting Validation" msgstr "" +#: templates/InvenTree/build_overdue.html:7 +msgid "Overdue Builds" +msgstr "" + #: templates/InvenTree/build_pending.html:7 msgid "Pending Builds" msgstr "" @@ -4513,7 +4547,7 @@ msgid "Edit setting" msgstr "" #: templates/InvenTree/settings/settings.html:7 -#: templates/InvenTree/settings/settings.html:13 templates/navbar.html:62 +#: templates/InvenTree/settings/settings.html:13 templates/navbar.html:66 msgid "Settings" msgstr "" @@ -4605,34 +4639,30 @@ msgid "InvenTree Version Information" msgstr "" #: templates/about.html:21 -msgid "Instance Name" -msgstr "" - -#: templates/about.html:26 msgid "InvenTree Version" msgstr "" -#: templates/about.html:30 +#: templates/about.html:25 msgid "Django Version" msgstr "" -#: templates/about.html:34 +#: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/about.html:38 +#: templates/about.html:33 msgid "Commit Date" msgstr "" -#: templates/about.html:42 +#: templates/about.html:37 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:42 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:51 +#: templates/about.html:46 msgid "Submit Bug Report" msgstr "" @@ -4733,51 +4763,51 @@ msgstr "" msgid "Barcode does not match Stock Item" msgstr "" -#: templates/js/bom.js:159 +#: templates/js/bom.js:165 msgid "Open subassembly" msgstr "" -#: templates/js/bom.js:200 +#: templates/js/bom.js:206 msgid "Optional" msgstr "" -#: templates/js/bom.js:240 +#: templates/js/bom.js:252 msgid "No pricing available" msgstr "" -#: templates/js/bom.js:259 templates/js/build.js:555 +#: templates/js/bom.js:272 templates/js/build.js:571 msgid "Actions" msgstr "" -#: templates/js/bom.js:267 +#: templates/js/bom.js:280 msgid "Validate BOM Item" msgstr "" -#: templates/js/bom.js:269 +#: templates/js/bom.js:282 msgid "This line has been validated" msgstr "" -#: templates/js/bom.js:271 +#: templates/js/bom.js:284 msgid "Edit BOM Item" msgstr "" -#: templates/js/bom.js:273 +#: templates/js/bom.js:286 msgid "Delete BOM Item" msgstr "" -#: templates/js/bom.js:346 templates/js/build.js:289 +#: templates/js/bom.js:363 templates/js/build.js:305 msgid "No BOM items found" msgstr "" -#: templates/js/bom.js:491 +#: templates/js/bom.js:509 msgid "INACTIVE" msgstr "" -#: templates/js/bom.js:505 +#: templates/js/bom.js:523 msgid "Uses" msgstr "" -#: templates/js/bom.js:516 +#: templates/js/bom.js:534 msgid "No matching parts found" msgstr "" @@ -4801,31 +4831,35 @@ msgstr "" msgid "New Stock Item" msgstr "" -#: templates/js/build.js:477 +#: templates/js/build.js:493 msgid "Required Part" msgstr "" -#: templates/js/build.js:498 +#: templates/js/build.js:514 msgid "Quantity Per" msgstr "" -#: templates/js/build.js:562 +#: templates/js/build.js:578 msgid "Build stock" msgstr "" -#: templates/js/build.js:566 templates/stock_table.html:25 +#: templates/js/build.js:582 templates/stock_table.html:25 msgid "Order stock" msgstr "" -#: templates/js/build.js:569 +#: templates/js/build.js:585 msgid "Allocate stock" msgstr "" -#: templates/js/build.js:610 +#: templates/js/build.js:626 msgid "No builds matching query" msgstr "" -#: templates/js/build.js:720 +#: templates/js/build.js:656 +msgid "Build order is overdue" +msgstr "" + +#: templates/js/build.js:747 msgid "No parts allocated for" msgstr "" @@ -4857,19 +4891,19 @@ msgstr "" msgid "Link" msgstr "" -#: templates/js/order.js:128 +#: templates/js/order.js:135 msgid "No purchase orders found" msgstr "" -#: templates/js/order.js:181 templates/js/stock.js:677 +#: templates/js/order.js:188 templates/js/stock.js:681 msgid "Date" msgstr "" -#: templates/js/order.js:211 +#: templates/js/order.js:218 msgid "No sales orders found" msgstr "" -#: templates/js/order.js:268 +#: templates/js/order.js:275 msgid "Shipment Date" msgstr "" @@ -4898,7 +4932,7 @@ msgid "No parts found" msgstr "" #: templates/js/part.js:343 templates/js/stock.js:456 -#: templates/js/stock.js:1013 +#: templates/js/stock.js:1017 msgid "Select" msgstr "" @@ -4906,7 +4940,7 @@ msgstr "" msgid "No category" msgstr "" -#: templates/js/part.js:429 templates/js/table_filters.js:256 +#: templates/js/part.js:429 templates/js/table_filters.js:260 msgid "Low stock" msgstr "" @@ -5002,35 +5036,39 @@ msgstr "" msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/stock.js:541 +#: templates/js/stock.js:542 msgid "Stock item has been rejected" msgstr "" -#: templates/js/stock.js:545 +#: templates/js/stock.js:546 msgid "Stock item is lost" msgstr "" -#: templates/js/stock.js:549 templates/js/table_filters.js:106 +#: templates/js/stock.js:549 +msgid "Stock item is destroyed" +msgstr "" + +#: templates/js/stock.js:553 templates/js/table_filters.js:106 msgid "Depleted" msgstr "" -#: templates/js/stock.js:743 +#: templates/js/stock.js:747 msgid "No user information" msgstr "" -#: templates/js/stock.js:852 +#: templates/js/stock.js:856 msgid "Create New Location" msgstr "" -#: templates/js/stock.js:951 +#: templates/js/stock.js:955 msgid "Serial" msgstr "" -#: templates/js/stock.js:1044 templates/js/table_filters.js:121 +#: templates/js/stock.js:1048 templates/js/table_filters.js:121 msgid "Installed" msgstr "" -#: templates/js/stock.js:1069 +#: templates/js/stock.js:1073 msgid "Install item" msgstr "" @@ -5071,7 +5109,7 @@ msgstr "" msgid "Batch code" msgstr "" -#: templates/js/table_filters.js:91 templates/js/table_filters.js:223 +#: templates/js/table_filters.js:91 templates/js/table_filters.js:227 msgid "Active parts" msgstr "" @@ -5131,43 +5169,43 @@ msgstr "" msgid "Build status" msgstr "" -#: templates/js/table_filters.js:196 templates/js/table_filters.js:209 +#: templates/js/table_filters.js:200 templates/js/table_filters.js:213 msgid "Order status" msgstr "" -#: templates/js/table_filters.js:201 templates/js/table_filters.js:214 +#: templates/js/table_filters.js:205 templates/js/table_filters.js:218 msgid "Outstanding" msgstr "" -#: templates/js/table_filters.js:233 +#: templates/js/table_filters.js:237 msgid "Include subcategories" msgstr "" -#: templates/js/table_filters.js:234 +#: templates/js/table_filters.js:238 msgid "Include parts in subcategories" msgstr "" -#: templates/js/table_filters.js:238 +#: templates/js/table_filters.js:242 msgid "Has IPN" msgstr "" -#: templates/js/table_filters.js:239 +#: templates/js/table_filters.js:243 msgid "Part has internal part number" msgstr "" -#: templates/js/table_filters.js:244 +#: templates/js/table_filters.js:248 msgid "Show active parts" msgstr "" -#: templates/js/table_filters.js:252 +#: templates/js/table_filters.js:256 msgid "Stock available" msgstr "" -#: templates/js/table_filters.js:268 +#: templates/js/table_filters.js:272 msgid "Starred" msgstr "" -#: templates/js/table_filters.js:280 +#: templates/js/table_filters.js:284 msgid "Purchasable" msgstr "" @@ -5195,30 +5233,50 @@ msgstr "" msgid "Scan Barcode" msgstr "" -#: templates/navbar.html:59 users/models.py:27 +#: templates/navbar.html:57 +msgid "InvenTree server issues detected" +msgstr "" + +#: templates/navbar.html:63 users/models.py:27 msgid "Admin" msgstr "" -#: templates/navbar.html:63 +#: templates/navbar.html:67 msgid "Logout" msgstr "" -#: templates/navbar.html:65 +#: templates/navbar.html:69 msgid "Login" msgstr "" -#: templates/navbar.html:68 +#: templates/navbar.html:80 msgid "About InvenTree" msgstr "" -#: templates/navbar.html:69 -msgid "Statistics" -msgstr "" - #: templates/search_form.html:6 templates/search_form.html:8 msgid "Search" msgstr "" +#: templates/stats.html:9 +msgid "Server" +msgstr "" + +#: templates/stats.html:13 +msgid "Instance Name" +msgstr "" + +#: templates/stats.html:18 +msgid "Server status" +msgstr "" + +#: templates/stats.html:21 +msgid "Healthy" +msgstr "" + +#: templates/stats.html:23 +msgid "Issues detected" +msgstr "" + #: templates/stock_table.html:6 msgid "Export Stock Information" msgstr "" @@ -5263,19 +5321,19 @@ msgstr "" msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:120 +#: users/admin.py:178 msgid "The following users are members of multiple groups:" msgstr "" -#: users/admin.py:143 +#: users/admin.py:201 msgid "Personal info" msgstr "" -#: users/admin.py:144 +#: users/admin.py:202 msgid "Permissions" msgstr "" -#: users/admin.py:147 +#: users/admin.py:205 msgid "Important dates" msgstr "" diff --git a/InvenTree/templates/InvenTree/build_overdue.html b/InvenTree/templates/InvenTree/build_overdue.html new file mode 100644 index 0000000000..9270336de1 --- /dev/null +++ b/InvenTree/templates/InvenTree/build_overdue.html @@ -0,0 +1,15 @@ +{% extends "collapse_index.html" %} + +{% load i18n %} + +{% block collapse_title %} + +{% trans "Overdue Builds" %} +{% endblock %} + +{% block collapse_content %} + + +
+ +{% endblock %} \ No newline at end of file diff --git a/InvenTree/templates/InvenTree/index.html b/InvenTree/templates/InvenTree/index.html index 8e59d51d2b..2f6898788c 100644 --- a/InvenTree/templates/InvenTree/index.html +++ b/InvenTree/templates/InvenTree/index.html @@ -16,6 +16,7 @@ InvenTree | {% trans "Index" %} {% endif %} {% if roles.build.view %} {% include "InvenTree/build_pending.html" with collapse_id="build_pending" %} + {% include "InvenTree/build_overdue.html" with collapse_id="build_overdue" %} {% endif %}
@@ -72,6 +73,15 @@ loadBuildTable("#build-pending-table", { disableFilters: true, }); +loadBuildTable("#build-overdue-table", { + url: "{% url 'api-build-list' %}", + params: { + part_detail: true, + overdue: true, + }, + disableFilters: true, +}); + loadSimplePartTable("#low-stock-table", "{% url 'api-part-list' %}", { params: { low_stock: true, @@ -126,6 +136,12 @@ $("#build-pending-table").on('load-success.bs.table', function() { $("#build-pending-count").html(count); }); +$("#build-overdue-table").on('load-success.bs.table', function() { + var count = $("#build-overdue-table").bootstrapTable('getData').length; + + $("#build-overdue-count").html(count); +}); + $("#low-stock-table").on('load-success.bs.table', function() { var count = $("#low-stock-table").bootstrapTable('getData').length; diff --git a/InvenTree/templates/js/build.js b/InvenTree/templates/js/build.js index a3c7bd5186..0455c8a6c4 100644 --- a/InvenTree/templates/js/build.js +++ b/InvenTree/templates/js/build.js @@ -650,7 +650,13 @@ function loadBuildTable(table, options) { value = `${prefix}${value}`; } - return renderLink(value, '/build/' + row.pk + '/'); + var html = renderLink(value, '/build/' + row.pk + '/'); + + if (row.overdue) { + html += makeIconBadge('fa-calendar-times icon-red', '{% trans "Build order is overdue" %}'); + } + + return html; } }, { @@ -699,6 +705,11 @@ function loadBuildTable(table, options) { title: '{% trans "Created" %}', sortable: true, }, + { + field: 'target_date', + title: '{% trans "Target Date" %}', + sortable: true, + }, { field: 'completion_date', title: '{% trans "Completed" %}', diff --git a/InvenTree/templates/js/part.js b/InvenTree/templates/js/part.js index 8c00625dfc..e0f6a491f6 100644 --- a/InvenTree/templates/js/part.js +++ b/InvenTree/templates/js/part.js @@ -202,7 +202,7 @@ function loadPartVariantTable(table, partId, options={}) { showColumns: true, original: params, queryParams: filters, - formatNoMatches: function() { return "{% trans "No variants found" %}"; }, + formatNoMatches: function() { return '{% trans "No variants found" %}'; }, columns: cols, treeEnable: true, rootParentId: partId, @@ -249,7 +249,7 @@ function loadParametricPartTable(table, options={}) { if (header === 'part') { columns.push({ field: header, - title: '{% trans 'Part' %}', + title: '{% trans "Part" %}', sortable: true, sortName: 'name', formatter: function(value, row, index, field) { @@ -268,7 +268,7 @@ function loadParametricPartTable(table, options={}) { } else if (header === 'description') { columns.push({ field: header, - title: '{% trans 'Description' %}', + title: '{% trans "Description" %}', sortable: true, }); } else { @@ -288,7 +288,7 @@ function loadParametricPartTable(table, options={}) { queryParams: table_headers, groupBy: false, name: options.name || 'parametric', - formatNoMatches: function() { return "{% trans "No parts found" %}"; }, + formatNoMatches: function() { return '{% trans "No parts found" %}'; }, columns: columns, showColumns: true, data: table_data, @@ -454,7 +454,7 @@ function loadPartTable(table, url, options={}) { groupBy: false, name: options.name || 'part', original: params, - formatNoMatches: function() { return "{% trans "No parts found" %}"; }, + formatNoMatches: function() { return '{% trans "No parts found" %}'; }, columns: columns, showColumns: true, }); @@ -564,12 +564,12 @@ function loadPartTestTemplateTable(table, options) { }, { field: 'test_name', - title: "{% trans "Test Name" %}", + title: '{% trans "Test Name" %}', sortable: true, }, { field: 'description', - title: "{% trans "Description" %}", + title: '{% trans "Description" %}', }, { field: 'required', @@ -581,14 +581,14 @@ function loadPartTestTemplateTable(table, options) { }, { field: 'requires_value', - title: "{% trans "Requires Value" %}", + title: '{% trans "Requires Value" %}', formatter: function(value) { return yesNoLabel(value); } }, { field: 'requires_attachment', - title: "{% trans "Requires Attachment" %}", + title: '{% trans "Requires Attachment" %}', formatter: function(value) { return yesNoLabel(value); } @@ -608,7 +608,9 @@ function loadPartTestTemplateTable(table, options) { return html; } else { - return '{% trans "This test is defined for a parent part" %}'; + var text = '{% trans "This test is defined for a parent part" %}'; + + return renderLink(text, `/part/${row.part}/tests/`); } } } diff --git a/InvenTree/templates/js/table_filters.js b/InvenTree/templates/js/table_filters.js index 153411d4e9..f1f5c12732 100644 --- a/InvenTree/templates/js/table_filters.js +++ b/InvenTree/templates/js/table_filters.js @@ -184,7 +184,11 @@ function getAvailableTableFilters(tableKey) { active: { type: 'bool', title: '{% trans "Active" %}', - } + }, + overdue: { + type: 'bool', + title: '{% trans "Overdue" %}', + }, }; } diff --git a/InvenTree/templates/registration/login.html b/InvenTree/templates/registration/login.html index ed0ef34719..6aab0bb801 100644 --- a/InvenTree/templates/registration/login.html +++ b/InvenTree/templates/registration/login.html @@ -1,4 +1,5 @@ {% load static %} +{% load i18n %} @@ -26,22 +27,25 @@