From f11348c9656dff7702654af7a800ce009c741010 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 15 Dec 2020 22:39:57 +1100 Subject: [PATCH 01/14] Improve rendering for login page --- InvenTree/templates/registration/login.html | 26 ++++++++++++--------- 1 file changed, 15 insertions(+), 11 deletions(-) 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 @@
-
+
-

InvenTree

-
-
+

InvenTree

+
+
-
-
- {% csrf_token %} - {{ form.as_p }} - -
+
+
+ {% csrf_token %} + {% load crispy_forms_tags %} + + {{ form|crispy }} + + +
+
-
From 802dd5174c8a94231b1ee0b168b4f2825ad0e4be Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 15 Dec 2020 23:24:37 +1100 Subject: [PATCH 02/14] Add "target_date" for Build model - Add "overdue" status to Build serializer --- InvenTree/build/api.py | 2 + InvenTree/build/forms.py | 1 + .../migrations/0025_build_target_date.py | 18 ++++++++ InvenTree/build/models.py | 25 ++++++++++- InvenTree/build/serializers.py | 45 ++++++++++++++++++- InvenTree/build/templates/build/detail.html | 45 ++++++++----------- 6 files changed, 108 insertions(+), 28 deletions(-) create mode 100644 InvenTree/build/migrations/0025_build_target_date.py diff --git a/InvenTree/build/api.py b/InvenTree/build/api.py index 2401e9d936..bd8f379edc 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): diff --git a/InvenTree/build/forms.py b/InvenTree/build/forms.py index ba7787798d..9c72113f3b 100644 --- a/InvenTree/build/forms.py +++ b/InvenTree/build/forms.py @@ -40,6 +40,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..104b6e55c8 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -47,7 +47,8 @@ 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 """ @@ -164,6 +165,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 +190,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..b1ef6405c3 100644 --- a/InvenTree/build/serializers.py +++ b/InvenTree/build/serializers.py @@ -5,12 +5,21 @@ JSON serializers for Build API # -*- coding: utf-8 -*- from __future__ import unicode_literals +import datetime + +from django.db.models import Q +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 InvenTree.status_codes import BuildStatus + 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 +32,38 @@ 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 + + # Construct a filter for finding overdue builds + today = datetime.datetime.now().date() + overdue = Q(status__in=BuildStatus.ACTIVE_CODES) & ~Q(target_date=None) & Q(target_date__lte=today) + + queryset = queryset.annotate( + overdue=Case( + When( + overdue, 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 +83,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/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" %}
From 51da26d21dffeeed8e8f86e7ffc4388e28033e2a Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 15 Dec 2020 23:27:59 +1100 Subject: [PATCH 03/14] Filter builds by "overdue" status --- InvenTree/build/api.py | 11 +++++++++++ InvenTree/build/models.py | 4 +++- InvenTree/build/serializers.py | 6 +----- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/InvenTree/build/api.py b/InvenTree/build/api.py index bd8f379edc..ffc8d97a92 100644 --- a/InvenTree/build/api.py +++ b/InvenTree/build/api.py @@ -73,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/models.py b/InvenTree/build/models.py index 104b6e55c8..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 @@ -53,6 +53,8 @@ class Build(MPTTModel): 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") diff --git a/InvenTree/build/serializers.py b/InvenTree/build/serializers.py index b1ef6405c3..dc28b7c82f 100644 --- a/InvenTree/build/serializers.py +++ b/InvenTree/build/serializers.py @@ -48,14 +48,10 @@ class BuildSerializer(InvenTreeModelSerializer): # Annotate a boolean 'overdue' flag - # Construct a filter for finding overdue builds - today = datetime.datetime.now().date() - overdue = Q(status__in=BuildStatus.ACTIVE_CODES) & ~Q(target_date=None) & Q(target_date__lte=today) - queryset = queryset.annotate( overdue=Case( When( - overdue, then=Value(True, output_field=BooleanField()), + Build.OVERDUE_FILTER, then=Value(True, output_field=BooleanField()), ), default=Value(False, output_field=BooleanField()) ) From c8c50af54b2c12d4f1318fe88463afcb4ae2f93c Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 15 Dec 2020 23:31:19 +1100 Subject: [PATCH 04/14] Filter builds by "overdue" status --- InvenTree/templates/js/build.js | 13 ++++++++++++- InvenTree/templates/js/table_filters.js | 6 +++++- 2 files changed, 17 insertions(+), 2 deletions(-) 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/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" %}', + }, }; } From 17d23fa47c3e3ffc4ca8bfdbe75e0bef02734422 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 15 Dec 2020 23:34:28 +1100 Subject: [PATCH 05/14] Add overdue builds to the index page --- InvenTree/templates/InvenTree/build_overdue.html | 15 +++++++++++++++ InvenTree/templates/InvenTree/index.html | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 InvenTree/templates/InvenTree/build_overdue.html 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; From 1a07ae0936215f720a2f1d726f78d5a7c96c77ce Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 16 Dec 2020 15:48:41 +1100 Subject: [PATCH 06/14] Render link rather than just text --- InvenTree/templates/js/part.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/InvenTree/templates/js/part.js b/InvenTree/templates/js/part.js index 8c00625dfc..d27c32024a 100644 --- a/InvenTree/templates/js/part.js +++ b/InvenTree/templates/js/part.js @@ -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/`); } } } From 6ef4325eac7e7dc34bc1822543843c8ab6c22a8d Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 16 Dec 2020 15:55:42 +1100 Subject: [PATCH 07/14] Javascript formatting --- InvenTree/templates/js/part.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/InvenTree/templates/js/part.js b/InvenTree/templates/js/part.js index d27c32024a..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); } From 597bf8be73d0a39e0c9b315d067da083c058663c Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 16 Dec 2020 16:13:38 +1100 Subject: [PATCH 08/14] Add date input to build target_date --- InvenTree/build/forms.py | 6 ++++++ InvenTree/build/templates/build/build_base.html | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/InvenTree/build/forms.py b/InvenTree/build/forms.py index 9c72113f3b..fef116d7f3 100644 --- a/InvenTree/build/forms.py +++ b/InvenTree/build/forms.py @@ -32,6 +32,12 @@ class EditBuildForm(HelperForm): 'reference': _('Build Order reference') } + target_date = forms.DateField( + widget=forms.DateInput( + attrs={'type': 'date'} + ) + ) + class Meta: model = Build fields = [ diff --git a/InvenTree/build/templates/build/build_base.html b/InvenTree/build/templates/build/build_base.html index 3a94398e87..22c70d1b0a 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 %} + From a8704a05d649439d3330d88ccb94f255525cc866 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 16 Dec 2020 16:15:39 +1100 Subject: [PATCH 09/14] PEP style fixes --- InvenTree/build/forms.py | 6 +++--- InvenTree/build/serializers.py | 5 ----- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/InvenTree/build/forms.py b/InvenTree/build/forms.py index fef116d7f3..48e1e06ca7 100644 --- a/InvenTree/build/forms.py +++ b/InvenTree/build/forms.py @@ -33,10 +33,10 @@ class EditBuildForm(HelperForm): } target_date = forms.DateField( - widget=forms.DateInput( - attrs={'type': 'date'} + widget=forms.DateInput( + attrs={'type': 'date'} ) - ) + ) class Meta: model = Build diff --git a/InvenTree/build/serializers.py b/InvenTree/build/serializers.py index dc28b7c82f..b71aaecc61 100644 --- a/InvenTree/build/serializers.py +++ b/InvenTree/build/serializers.py @@ -5,16 +5,12 @@ JSON serializers for Build API # -*- coding: utf-8 -*- from __future__ import unicode_literals -import datetime - -from django.db.models import Q 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 InvenTree.status_codes import BuildStatus from stock.serializers import StockItemSerializerBrief from part.serializers import PartBriefSerializer @@ -59,7 +55,6 @@ class BuildSerializer(InvenTreeModelSerializer): return queryset - def __init__(self, *args, **kwargs): part_detail = kwargs.pop('part_detail', False) From a9310d4a3933cdaef191d8ef1e4038bdf36d22f3 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 16 Dec 2020 16:16:07 +1100 Subject: [PATCH 10/14] Add a #TODO in code --- InvenTree/build/forms.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/InvenTree/build/forms.py b/InvenTree/build/forms.py index 48e1e06ca7..70deeef7b1 100644 --- a/InvenTree/build/forms.py +++ b/InvenTree/build/forms.py @@ -32,6 +32,8 @@ 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'} From 261a9af4f562aeaf575f5fcd58f6e2033e60ac65 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 16 Dec 2020 16:32:20 +1100 Subject: [PATCH 11/14] Typo fix --- InvenTree/build/templates/build/build_base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InvenTree/build/templates/build/build_base.html b/InvenTree/build/templates/build/build_base.html index 22c70d1b0a..1124dd16c0 100644 --- a/InvenTree/build/templates/build/build_base.html +++ b/InvenTree/build/templates/build/build_base.html @@ -89,7 +89,7 @@ src="{% static 'img/blank_image.png' %}" {% build_status_label build.status %} {% if build.is_overdue %} - {% trans "Overdue" %} + {% trans "Overdue" %} {% endif %} From 0500036d0aefafa4fc08c8102c8a548fe79294a0 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 16 Dec 2020 16:58:40 +1100 Subject: [PATCH 12/14] settings.py - typo fix --- InvenTree/InvenTree/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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() From 447f0b0ed792f5758118d1f35342297f2206e67b Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 16 Dec 2020 19:03:04 +1100 Subject: [PATCH 13/14] Update translations --- InvenTree/locale/de/LC_MESSAGES/django.mo | Bin 45419 -> 44619 bytes InvenTree/locale/de/LC_MESSAGES/django.po | 907 ++++++++++++---------- InvenTree/locale/en/LC_MESSAGES/django.po | 844 ++++++++++---------- InvenTree/locale/es/LC_MESSAGES/django.po | 844 ++++++++++---------- 4 files changed, 1407 insertions(+), 1188 deletions(-) diff --git a/InvenTree/locale/de/LC_MESSAGES/django.mo b/InvenTree/locale/de/LC_MESSAGES/django.mo index 4d57b3c49d2dc0d1dad23269c4ccba3b011a5fa5..02eab87b56b023f41ae0915056a9e176383c51c6 100644 GIT binary patch delta 14236 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 QM*POpSu=`%5TE0J0gTkS9{>OV delta 14932 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\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 build/views.py:767 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" @@ -1160,8 +1197,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 +1336,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 +1355,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 +1364,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 +1418,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 +1471,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 +1616,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 +1667,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 +1689,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 +1717,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 +1867,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 +1919,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 +1988,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 +2111,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 +2150,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 +2162,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 +2235,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 +2268,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 +2296,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 +2338,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 +2411,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 +2428,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 +2732,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 +2834,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 +2922,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 +2948,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 +2973,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 +2989,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 +3150,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 +3224,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 +3278,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 +3352,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 +3442,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 +3514,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 +3535,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 +3617,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 +3788,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 +3948,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 +4012,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 +4144,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 +4222,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 +4347,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 +4610,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 +4659,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 +4671,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 +4806,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 +4816,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 +4832,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 +4968,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 +5134,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 +5285,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 +5403,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 +5553,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 +5635,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 +5707,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 +5754,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 +5762,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 +5886,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 +5991,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 +6059,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 +6129,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 +6237,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 +6299,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..515c3e1949 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:01+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 build/views.py:767 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 "" @@ -979,8 +1006,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 +1121,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 +1138,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 +1147,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 +1187,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 +1228,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 +1359,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 +1402,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 +1424,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 +1448,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 +1597,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 +1643,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 +1712,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 +1821,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 +1860,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 +1872,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 +1937,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 +1969,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 +1993,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 +2031,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 +2100,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 +2117,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 +2401,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 +2481,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 +2565,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 +2591,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 +2616,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 +2761,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 +2827,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 +2869,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 +2927,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 +2999,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 +3061,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 +3082,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 +3156,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 +3301,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 +3435,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 +3491,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 +3607,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 +3667,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 +3785,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 +3996,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 +4033,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 +4041,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 +4156,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 +4166,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 +4178,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 +4282,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 +4432,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 +4543,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 +4635,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 +4759,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 +4827,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 +4887,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 +4928,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 +4936,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 +5032,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 +5105,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 +5165,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 +5229,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 +5317,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..515c3e1949 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:01+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 build/views.py:767 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 "" @@ -979,8 +1006,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 +1121,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 +1138,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 +1147,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 +1187,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 +1228,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 +1359,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 +1402,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 +1424,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 +1448,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 +1597,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 +1643,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 +1712,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 +1821,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 +1860,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 +1872,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 +1937,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 +1969,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 +1993,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 +2031,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 +2100,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 +2117,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 +2401,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 +2481,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 +2565,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 +2591,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 +2616,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 +2761,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 +2827,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 +2869,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 +2927,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 +2999,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 +3061,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 +3082,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 +3156,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 +3301,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 +3435,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 +3491,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 +3607,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 +3667,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 +3785,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 +3996,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 +4033,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 +4041,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 +4156,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 +4166,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 +4178,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 +4282,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 +4432,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 +4543,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 +4635,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 +4759,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 +4827,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 +4887,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 +4928,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 +4936,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 +5032,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 +5105,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 +5165,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 +5229,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 +5317,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 "" From 464d76a8195d7eea9493dedde03937c246fc9132 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 16 Dec 2020 19:09:53 +1100 Subject: [PATCH 14/14] Update form title strings --- InvenTree/build/views.py | 4 ++-- InvenTree/locale/de/LC_MESSAGES/django.mo | Bin 44619 -> 44562 bytes InvenTree/locale/de/LC_MESSAGES/django.po | 14 +++++++++++--- InvenTree/locale/en/LC_MESSAGES/django.po | 10 +++++++--- InvenTree/locale/es/LC_MESSAGES/django.po | 10 +++++++--- 5 files changed, 27 insertions(+), 11 deletions(-) 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 02eab87b56b023f41ae0915056a9e176383c51c6..b2a1691aac0414129c067c27a2872943d0224eff 100644 GIT binary patch delta 13850 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 X(RAzKwEcct-)-FLnXNt(YQ_H_Hwm7% delta 13894 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 I>CI#Q579rO?f?J) diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po index effd01fc31..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-12-16 19:01+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" @@ -804,7 +804,7 @@ msgstr "Bau fertigstellen" msgid "Cancel Build" msgstr "Bau abbrechen" -#: build/templates/build/build_base.html:64 build/views.py:767 +#: build/templates/build/build_base.html:64 msgid "Delete Build" msgstr "Bau entfernt" @@ -1168,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" diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po index 515c3e1949..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-12-16 19:01+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" @@ -695,7 +695,7 @@ msgstr "" msgid "Cancel Build" msgstr "" -#: build/templates/build/build_base.html:64 build/views.py:767 +#: build/templates/build/build_base.html:64 msgid "Delete Build" msgstr "" @@ -983,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 "" diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po index 515c3e1949..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-12-16 19:01+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" @@ -695,7 +695,7 @@ msgstr "" msgid "Cancel Build" msgstr "" -#: build/templates/build/build_base.html:64 build/views.py:767 +#: build/templates/build/build_base.html:64 msgid "Delete Build" msgstr "" @@ -983,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 ""