From 80b10c62f3143de9a17f75b8c542b7aa40cb94d5 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 4 Jun 2022 09:11:30 +1000 Subject: [PATCH 01/13] Fix behaviour of attachment table for purchase orders (#3127) - Refresh table, rather than reloading page! (cherry picked from commit 141c2370e3a19526def9bfcd7ccac50e60e1684a) --- InvenTree/order/templates/order/purchase_order_detail.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InvenTree/order/templates/order/purchase_order_detail.html b/InvenTree/order/templates/order/purchase_order_detail.html index 85d93f969a..1c4b36d3aa 100644 --- a/InvenTree/order/templates/order/purchase_order_detail.html +++ b/InvenTree/order/templates/order/purchase_order_detail.html @@ -135,7 +135,7 @@ }, label: 'attachment', success: function(data, status, xhr) { - location.reload(); + $('#attachment-table').bootstrapTable('refresh'); } } ); From bbbfd003e09bda3bc18c412b58cecced5b22947f Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 6 Jun 2022 00:25:08 +1000 Subject: [PATCH 02/13] Convert category parameter forms to use the API (#3130) * Moving PartCategoryParameterTemplate model to the API - Add detail API endpoint - Add 'create' action to LIST endpoint * Update settings page to use the new API forms * Remove old views / forms * Update API version * Fix table buttons * Add title to deletion form * Add unit tests for new API views --- InvenTree/InvenTree/api_version.py | 5 +- InvenTree/part/api.py | 15 +- InvenTree/part/forms.py | 27 +-- InvenTree/part/models.py | 4 +- InvenTree/part/serializers.py | 6 +- InvenTree/part/test_api.py | 54 +++++ InvenTree/part/urls.py | 8 - InvenTree/part/views.py | 190 +----------------- .../InvenTree/settings/category.html | 4 +- .../InvenTree/settings/settings.html | 61 ++++-- 10 files changed, 124 insertions(+), 250 deletions(-) diff --git a/InvenTree/InvenTree/api_version.py b/InvenTree/InvenTree/api_version.py index d970fb802d..1ba4f259fb 100644 --- a/InvenTree/InvenTree/api_version.py +++ b/InvenTree/InvenTree/api_version.py @@ -2,11 +2,14 @@ # InvenTree API version -INVENTREE_API_VERSION = 56 +INVENTREE_API_VERSION = 57 """ Increment this API version number whenever there is a significant change to the API that any clients need to know about +v57 -> 2022-06-05 : https://github.com/inventree/InvenTree/pull/3130 + - Transfer PartCategoryTemplateParameter actions to the API + v56 -> 2022-06-02 : https://github.com/inventree/InvenTree/pull/3123 - Expose the PartParameterTemplate model to use the API diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index 43ea17f060..cfac04fa03 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -194,7 +194,7 @@ class CategoryMetadata(generics.RetrieveUpdateAPIView): queryset = PartCategory.objects.all() -class CategoryParameterList(generics.ListAPIView): +class CategoryParameterList(generics.ListCreateAPIView): """API endpoint for accessing a list of PartCategoryParameterTemplate objects. - GET: Return a list of PartCategoryParameterTemplate objects @@ -235,6 +235,13 @@ class CategoryParameterList(generics.ListAPIView): return queryset +class CategoryParameterDetail(generics.RetrieveUpdateDestroyAPIView): + """Detail endpoint fro the PartCategoryParameterTemplate model""" + + queryset = PartCategoryParameterTemplate.objects.all() + serializer_class = part_serializers.CategoryParameterTemplateSerializer + + class CategoryTree(generics.ListAPIView): """API endpoint for accessing a list of PartCategory objects ready for rendering a tree.""" @@ -1855,7 +1862,11 @@ part_api_urls = [ # Base URL for PartCategory API endpoints re_path(r'^category/', include([ re_path(r'^tree/', CategoryTree.as_view(), name='api-part-category-tree'), - re_path(r'^parameters/', CategoryParameterList.as_view(), name='api-part-category-parameter-list'), + + re_path(r'^parameters/', include([ + re_path('^(?P\d+)/', CategoryParameterDetail.as_view(), name='api-part-category-parameter-detail'), + re_path('^.*$', CategoryParameterList.as_view(), name='api-part-category-parameter-list'), + ])), # Category detail endpoints re_path(r'^(?P\d+)/', include([ diff --git a/InvenTree/part/forms.py b/InvenTree/part/forms.py index 4f17838171..fa9983cf3e 100644 --- a/InvenTree/part/forms.py +++ b/InvenTree/part/forms.py @@ -10,8 +10,8 @@ from InvenTree.fields import RoundingDecimalFormField from InvenTree.forms import HelperForm from InvenTree.helpers import clean_decimal -from .models import (Part, PartCategory, PartCategoryParameterTemplate, - PartInternalPriceBreak, PartSellPriceBreak) +from .models import (Part, PartCategory, PartInternalPriceBreak, + PartSellPriceBreak) class PartImageDownloadForm(HelperForm): @@ -59,29 +59,6 @@ class SetPartCategoryForm(forms.Form): part_category = TreeNodeChoiceField(queryset=PartCategory.objects.all(), required=True, help_text=_('Select part category')) -class EditCategoryParameterTemplateForm(HelperForm): - """Form for editing a PartCategoryParameterTemplate object.""" - - add_to_same_level_categories = forms.BooleanField(required=False, - initial=False, - help_text=_('Add parameter template to same level categories')) - - add_to_all_categories = forms.BooleanField(required=False, - initial=False, - help_text=_('Add parameter template to all categories')) - - class Meta: - """Metaclass defines fields for this form""" - model = PartCategoryParameterTemplate - fields = [ - 'category', - 'parameter_template', - 'default_value', - 'add_to_same_level_categories', - 'add_to_all_categories', - ] - - class PartPriceForm(forms.Form): """Simple form for viewing part pricing information.""" diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index d5a6900c8c..436745eadb 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -2383,7 +2383,9 @@ class PartParameter(models.Model): class PartCategoryParameterTemplate(models.Model): - """A PartCategoryParameterTemplate creates a unique relationship between a PartCategory and a PartParameterTemplate. Multiple PartParameterTemplate instances can be associated to a PartCategory to drive a default list of parameter templates attached to a Part instance upon creation. + """A PartCategoryParameterTemplate creates a unique relationship between a PartCategory and a PartParameterTemplate. + + Multiple PartParameterTemplate instances can be associated to a PartCategory to drive a default list of parameter templates attached to a Part instance upon creation. Attributes: category: Reference to a single PartCategory object diff --git a/InvenTree/part/serializers.py b/InvenTree/part/serializers.py index 031260563f..57a840855e 100644 --- a/InvenTree/part/serializers.py +++ b/InvenTree/part/serializers.py @@ -753,10 +753,9 @@ class BomItemSerializer(InvenTreeModelSerializer): class CategoryParameterTemplateSerializer(InvenTreeModelSerializer): - """Serializer for PartCategoryParameterTemplate.""" + """Serializer for the PartCategoryParameterTemplate model.""" - parameter_template = PartParameterTemplateSerializer(many=False, - read_only=True) + parameter_template_detail = PartParameterTemplateSerializer(source='parameter_template', many=False, read_only=True) category_detail = CategorySerializer(source='category', many=False, read_only=True) @@ -768,6 +767,7 @@ class CategoryParameterTemplateSerializer(InvenTreeModelSerializer): 'category', 'category_detail', 'parameter_template', + 'parameter_template_detail', 'default_value', ] diff --git a/InvenTree/part/test_api.py b/InvenTree/part/test_api.py index 6af000f283..0df4fefc72 100644 --- a/InvenTree/part/test_api.py +++ b/InvenTree/part/test_api.py @@ -14,6 +14,7 @@ from InvenTree.api_tester import InvenTreeAPITestCase from InvenTree.status_codes import (BuildStatus, PurchaseOrderStatus, StockStatus) from part.models import (BomItem, BomItemSubstitute, Part, PartCategory, + PartCategoryParameterTemplate, PartParameterTemplate, PartRelated) from stock.models import StockItem, StockLocation @@ -24,6 +25,7 @@ class PartCategoryAPITest(InvenTreeAPITestCase): fixtures = [ 'category', 'part', + 'params', 'location', 'bom', 'company', @@ -40,6 +42,7 @@ class PartCategoryAPITest(InvenTreeAPITestCase): 'part.delete', 'part_category.change', 'part_category.add', + 'part_category.delete', ] def test_category_list(self): @@ -94,6 +97,57 @@ class PartCategoryAPITest(InvenTreeAPITestCase): self.assertEqual(metadata['water'], 'melon') self.assertEqual(metadata['abc'], 'ABC') + def test_category_parameters(self): + """Test that the PartCategoryParameterTemplate API function work""" + + url = reverse('api-part-category-parameter-list') + + response = self.get(url, {}, expected_code=200) + + self.assertEqual(len(response.data), 2) + + # Add some more category templates via the API + n = PartParameterTemplate.objects.count() + + for template in PartParameterTemplate.objects.all(): + response = self.post( + url, + { + 'category': 2, + 'parameter_template': template.pk, + 'default_value': 'xyz', + } + ) + + # Total number of category templates should have increased + response = self.get(url, {}, expected_code=200) + self.assertEqual(len(response.data), 2 + n) + + # Filter by category + response = self.get( + url, + { + 'category': 2, + } + ) + + self.assertEqual(len(response.data), n) + + # Test that we can retrieve individual templates via the API + for template in PartCategoryParameterTemplate.objects.all(): + url = reverse('api-part-category-parameter-detail', kwargs={'pk': template.pk}) + + data = self.get(url, {}, expected_code=200).data + + for key in ['pk', 'category', 'category_detail', 'parameter_template', 'parameter_template_detail', 'default_value']: + self.assertIn(key, data.keys()) + + # Test that we can delete via the API also + response = self.delete(url, expected_code=204) + + # There should not be any templates left at this point + self.assertEqual(PartCategoryParameterTemplate.objects.count(), 0) + class PartOptionsAPITest(InvenTreeAPITestCase): """Tests for the various OPTIONS endpoints in the /part/ API. diff --git a/InvenTree/part/urls.py b/InvenTree/part/urls.py index cafad19122..9c70b364c9 100644 --- a/InvenTree/part/urls.py +++ b/InvenTree/part/urls.py @@ -28,12 +28,6 @@ part_detail_urls = [ re_path(r'^.*$', views.PartDetail.as_view(), name='part-detail'), ] -category_parameter_urls = [ - re_path(r'^new/', views.CategoryParameterTemplateCreate.as_view(), name='category-param-template-create'), - re_path(r'^(?P\d+)/edit/', views.CategoryParameterTemplateEdit.as_view(), name='category-param-template-edit'), - re_path(r'^(?P\d+)/delete/', views.CategoryParameterTemplateDelete.as_view(), name='category-param-template-delete'), -] - category_urls = [ # Top level subcategory display @@ -42,8 +36,6 @@ category_urls = [ # Category detail views re_path(r'(?P\d+)/', include([ re_path(r'^delete/', views.CategoryDelete.as_view(), name='category-delete'), - re_path(r'^parameters/', include(category_parameter_urls)), - # Anything else re_path(r'^.*$', views.CategoryDetail.as_view(), name='category-detail'), ])) diff --git a/InvenTree/part/views.py b/InvenTree/part/views.py index 50225c8348..e2698044f6 100644 --- a/InvenTree/part/views.py +++ b/InvenTree/part/views.py @@ -9,8 +9,6 @@ from django.contrib import messages from django.core.exceptions import ValidationError from django.core.files.base import ContentFile from django.db import transaction -from django.db.utils import IntegrityError -from django.forms import HiddenInput from django.shortcuts import HttpResponseRedirect, get_object_or_404 from django.urls import reverse from django.utils.translation import gettext_lazy as _ @@ -27,8 +25,8 @@ from common.models import InvenTreeSetting from common.views import FileManagementAjaxView, FileManagementFormView from company.models import SupplierPart from InvenTree.helpers import str2bool -from InvenTree.views import (AjaxCreateView, AjaxDeleteView, AjaxUpdateView, - AjaxView, InvenTreeRoleMixin, QRCodeView) +from InvenTree.views import (AjaxDeleteView, AjaxUpdateView, AjaxView, + InvenTreeRoleMixin, QRCodeView) from order.models import PurchaseOrderLineItem from plugin.views import InvenTreePluginViewMixin from stock.models import StockItem, StockLocation @@ -36,7 +34,7 @@ from stock.models import StockItem, StockLocation from . import forms as part_forms from . import settings as part_settings from .bom import ExportBom, IsValidBOMFormat, MakeBomTemplate -from .models import Part, PartCategory, PartCategoryParameterTemplate +from .models import Part, PartCategory class PartIndex(InvenTreeRoleMixin, ListView): @@ -984,185 +982,3 @@ class CategoryDelete(AjaxDeleteView): return { 'danger': _('Part category was deleted'), } - - -class CategoryParameterTemplateCreate(AjaxCreateView): - """View for creating a new PartCategoryParameterTemplate.""" - - model = PartCategoryParameterTemplate - form_class = part_forms.EditCategoryParameterTemplateForm - ajax_form_title = _('Create Category Parameter Template') - - def get_initial(self): - """Get initial data for Category.""" - initials = super().get_initial() - - category_id = self.kwargs.get('pk', None) - - if category_id: - try: - initials['category'] = PartCategory.objects.get(pk=category_id) - except (PartCategory.DoesNotExist, ValueError): - pass - - return initials - - def get_form(self): - """Create a form to upload a new CategoryParameterTemplate. - - - Hide the 'category' field (parent part) - - Display parameter templates which are not yet related - """ - form = super().get_form() - - form.fields['category'].widget = HiddenInput() - - if form.is_valid(): - form.cleaned_data['category'] = self.kwargs.get('pk', None) - - try: - # Get selected category - category = self.get_initial()['category'] - - # Get existing parameter templates - parameters = [template.parameter_template.pk - for template in category.get_parameter_templates()] - - # Exclude templates already linked to category - updated_choices = [] - for choice in form.fields["parameter_template"].choices: - if (choice[0] not in parameters): - updated_choices.append(choice) - - # Update choices for parameter templates - form.fields['parameter_template'].choices = updated_choices - except KeyError: - pass - - return form - - def post(self, request, *args, **kwargs): - """Capture the POST request. - - - If the add_to_all_categories object is set, link parameter template to - all categories - - If the add_to_same_level_categories object is set, link parameter template to - same level categories - """ - form = self.get_form() - - valid = form.is_valid() - - if valid: - add_to_same_level_categories = form.cleaned_data['add_to_same_level_categories'] - add_to_all_categories = form.cleaned_data['add_to_all_categories'] - - selected_category = PartCategory.objects.get(pk=int(self.kwargs['pk'])) - parameter_template = form.cleaned_data['parameter_template'] - default_value = form.cleaned_data['default_value'] - - categories = PartCategory.objects.all() - - if add_to_same_level_categories and not add_to_all_categories: - # Get level - level = selected_category.level - # Filter same level categories - categories = categories.filter(level=level) - - if add_to_same_level_categories or add_to_all_categories: - # Add parameter template and default value to categories - for category in categories: - # Skip selected category (will be processed in the post call) - if category.pk != selected_category.pk: - try: - cat_template = PartCategoryParameterTemplate.objects.create(category=category, - parameter_template=parameter_template, - default_value=default_value) - cat_template.save() - except IntegrityError: - # Parameter template is already linked to category - pass - - return super().post(request, *args, **kwargs) - - -class CategoryParameterTemplateEdit(AjaxUpdateView): - """View for editing a PartCategoryParameterTemplate.""" - - model = PartCategoryParameterTemplate - form_class = part_forms.EditCategoryParameterTemplateForm - ajax_form_title = _('Edit Category Parameter Template') - - def get_object(self): - """Returns the PartCategoryParameterTemplate associated with this view - - - First, attempt lookup based on supplied 'pid' kwarg - - Else, attempt lookup based on supplied 'pk' kwarg - """ - try: - self.object = self.model.objects.get(pk=self.kwargs['pid']) - except: - return None - - return self.object - - def get_form(self): - """Create a form to upload a new CategoryParameterTemplate. - - - Hide the 'category' field (parent part) - - Display parameter templates which are not yet related - """ - form = super().get_form() - - form.fields['category'].widget = HiddenInput() - form.fields['add_to_all_categories'].widget = HiddenInput() - form.fields['add_to_same_level_categories'].widget = HiddenInput() - - if form.is_valid(): - form.cleaned_data['category'] = self.kwargs.get('pk', None) - - try: - # Get selected category - category = PartCategory.objects.get(pk=self.kwargs.get('pk', None)) - # Get selected template - selected_template = self.get_object().parameter_template - - # Get existing parameter templates - parameters = [template.parameter_template.pk - for template in category.get_parameter_templates() - if template.parameter_template.pk != selected_template.pk] - - # Exclude templates already linked to category - updated_choices = [] - for choice in form.fields["parameter_template"].choices: - if (choice[0] not in parameters): - updated_choices.append(choice) - - # Update choices for parameter templates - form.fields['parameter_template'].choices = updated_choices - # Set initial choice to current template - form.fields['parameter_template'].initial = selected_template - except KeyError: - pass - - return form - - -class CategoryParameterTemplateDelete(AjaxDeleteView): - """View for deleting an existing PartCategoryParameterTemplate.""" - - model = PartCategoryParameterTemplate - ajax_form_title = _("Delete Category Parameter Template") - - def get_object(self): - """Returns the PartCategoryParameterTemplate associated with this view - - - First, attempt lookup based on supplied 'pid' kwarg - - Else, attempt lookup based on supplied 'pk' kwarg - """ - try: - self.object = self.model.objects.get(pk=self.kwargs['pid']) - except: - return None - - return self.object diff --git a/InvenTree/templates/InvenTree/settings/category.html b/InvenTree/templates/InvenTree/settings/category.html index f90d1e8d11..d6c5c872b0 100644 --- a/InvenTree/templates/InvenTree/settings/category.html +++ b/InvenTree/templates/InvenTree/settings/category.html @@ -8,14 +8,14 @@ {% endblock %} {% block actions %} - {% endblock %} {% block content %} -
+
diff --git a/InvenTree/templates/InvenTree/settings/settings.html b/InvenTree/templates/InvenTree/settings/settings.html index dc342fab3e..96236ec54d 100644 --- a/InvenTree/templates/InvenTree/settings/settings.html +++ b/InvenTree/templates/InvenTree/settings/settings.html @@ -222,7 +222,7 @@ $('#cat-param-table').inventreeTable({ switchable: false, }, { - field: 'parameter_template.name', + field: 'parameter_template_detail.name', title: '{% trans "Parameter Template" %}', sortable: 'true', }, @@ -249,18 +249,23 @@ $('#cat-param-table').inventreeTable({ function loadTemplateTable(pk) { - // Enable the buttons - $('#new-cat-param').removeAttr('disabled'); + var query = {}; + + if (pk) { + query['category'] = pk; + } // Load the parameter table $("#cat-param-table").bootstrapTable('refresh', { - query: { - category: pk, - }, + query: query, url: '{% url "api-part-category-parameter-list" %}', }); } + +// Initially load table with *all* categories +loadTemplateTable(); + $('body').on('change', '#category-select', function() { var pk = $(this).val(); loadTemplateTable(pk); @@ -270,14 +275,20 @@ $("#new-cat-param").click(function() { var pk = $('#category-select').val(); - launchModalForm(`/part/category/${pk}/parameters/new/`, { - success: function() { - $("#cat-param-table").bootstrapTable('refresh', { - query: { - category: pk, - } - }); + constructForm('{% url "api-part-category-parameter-list" %}', { + title: '{% trans "Create Category Parameter Template" %}', + method: 'POST', + fields: { + parameter_template: {}, + category: { + icon: 'fa-sitemap', + value: pk, + }, + default_value: {}, }, + onSuccess: function() { + loadTemplateTable(pk); + } }); }); @@ -286,15 +297,21 @@ $("#cat-param-table").on('click', '.template-edit', function() { var category = $('#category-select').val(); var pk = $(this).attr('pk'); - var url = `/part/category/${category}/parameters/${pk}/edit/`; - - launchModalForm(url, { - success: function() { - $("#cat-param-table").bootstrapTable('refresh'); + constructForm(`/api/part/category/parameters/${pk}/`, { + fields: { + parameter_template: {}, + category: { + icon: 'fa-sitemap', + }, + default_value: {}, + }, + onSuccess: function() { + loadTemplateTable(pk); } }); }); + $("#cat-param-table").on('click', '.template-delete', function() { var category = $('#category-select').val(); @@ -302,9 +319,11 @@ $("#cat-param-table").on('click', '.template-delete', function() { var url = `/part/category/${category}/parameters/${pk}/delete/`; - launchModalForm(url, { - success: function() { - $("#cat-param-table").bootstrapTable('refresh'); + constructForm(`/api/part/category/parameters/${pk}/`, { + method: 'DELETE', + title: '{% trans "Delete Category Parameter Template" %}', + onSuccess: function() { + loadTemplateTable(pk); } }); }); From f38386b13cef38806701d1eb54f9272af1c4c252 Mon Sep 17 00:00:00 2001 From: Matthias Mair Date: Mon, 6 Jun 2022 00:56:52 +0200 Subject: [PATCH 03/13] Add more checks to pre-commit (#3132) * Add bandit to pre-commit checks * fix catchall exceptions * remove unused definitons * remove unuseed ariables * Add docstring * fix B006, B008 errors * fix B007 error * ignore B009 * Add checks for formatting and naming --- .pre-commit-config.yaml | 6 ++++++ InvenTree/InvenTree/api_tester.py | 6 +++++- InvenTree/InvenTree/apps.py | 2 +- InvenTree/InvenTree/exchange.py | 8 ++++++-- InvenTree/InvenTree/helpers.py | 2 +- .../management/commands/rebuild_models.py | 10 +++++----- InvenTree/InvenTree/metadata.py | 2 +- InvenTree/InvenTree/middleware.py | 2 +- InvenTree/InvenTree/models.py | 4 ++-- InvenTree/InvenTree/serializers.py | 14 ++++++------- InvenTree/InvenTree/tasks.py | 4 ++-- InvenTree/InvenTree/tests.py | 14 ++++++++++--- InvenTree/InvenTree/validators.py | 2 +- InvenTree/InvenTree/version.py | 4 ++-- InvenTree/InvenTree/views.py | 6 +++--- InvenTree/build/api.py | 4 ++-- .../migrations/0032_auto_20211014_0632.py | 2 +- InvenTree/build/models.py | 4 ++-- InvenTree/build/test_api.py | 2 +- InvenTree/common/apps.py | 2 +- InvenTree/common/files.py | 2 +- InvenTree/common/models.py | 2 +- InvenTree/common/views.py | 6 +++++- InvenTree/company/views.py | 2 +- InvenTree/label/api.py | 2 +- InvenTree/label/test_api.py | 6 +++++- InvenTree/order/api.py | 6 +++--- .../migrations/0052_auto_20211014_0631.py | 4 ++-- InvenTree/order/models.py | 6 +++++- InvenTree/part/api.py | 6 +++--- InvenTree/part/models.py | 6 +++--- InvenTree/part/serializers.py | 4 ++-- .../part/templatetags/inventree_extras.py | 4 ++-- InvenTree/part/test_api.py | 4 ++-- InvenTree/part/test_bom_import.py | 4 ++-- InvenTree/part/test_part.py | 2 +- InvenTree/part/views.py | 2 +- InvenTree/plugin/apps.py | 2 +- InvenTree/plugin/base/integration/mixins.py | 2 +- InvenTree/plugin/helpers.py | 2 +- InvenTree/plugin/registry.py | 6 +++--- .../integration/custom_panel_sample.py | 2 +- .../plugin/templatetags/plugin_extras.py | 2 +- InvenTree/report/api.py | 6 +++--- InvenTree/report/apps.py | 6 +++--- InvenTree/stock/api.py | 20 +++++++++---------- .../migrations/0061_auto_20210511_0911.py | 6 +++--- .../migrations/0069_auto_20211109_2347.py | 2 +- InvenTree/stock/models.py | 6 +++++- InvenTree/stock/tests.py | 6 +++--- InvenTree/users/models.py | 4 ++-- ci/check_js_templates.py | 4 ++-- ci/version_check.py | 4 ++-- docker/gunicorn.conf.py | 2 ++ setup.cfg | 2 ++ tasks.py | 11 ++++++---- 56 files changed, 154 insertions(+), 109 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 269ddddee9..5735afeb8b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,6 +18,12 @@ repos: rev: '4.0.1' hooks: - id: flake8 + additional_dependencies: [ + 'flake8-bugbear', + 'flake8-docstrings', + 'flake8-string-format', + 'pep8-naming ', + ] - repo: https://github.com/pycqa/isort rev: '5.10.1' hooks: diff --git a/InvenTree/InvenTree/api_tester.py b/InvenTree/InvenTree/api_tester.py index 052e1c31a4..08952a7df1 100644 --- a/InvenTree/InvenTree/api_tester.py +++ b/InvenTree/InvenTree/api_tester.py @@ -105,8 +105,12 @@ class InvenTreeAPITestCase(UserMixin, APITestCase): return actions - def get(self, url, data={}, expected_code=200): + def get(self, url, data=None, expected_code=200): """Issue a GET request.""" + # Set default - see B006 + if data is None: + data = {} + response = self.client.get(url, data, format='json') if expected_code is not None: diff --git a/InvenTree/InvenTree/apps.py b/InvenTree/InvenTree/apps.py index c8a8589ae8..764f1748a6 100644 --- a/InvenTree/InvenTree/apps.py +++ b/InvenTree/InvenTree/apps.py @@ -136,7 +136,7 @@ class InvenTreeConfig(AppConfig): logger.info("Exchange backend not found - updating") update = True - except: + except Exception: # Some other error - potentially the tables are not ready yet return diff --git a/InvenTree/InvenTree/exchange.py b/InvenTree/InvenTree/exchange.py index 52f6b06725..684802c52e 100644 --- a/InvenTree/InvenTree/exchange.py +++ b/InvenTree/InvenTree/exchange.py @@ -43,12 +43,16 @@ class InvenTreeExchange(SimpleExchangeBackend): context = ssl.create_default_context(cafile=certifi.where()) response = urlopen(url, timeout=5, context=context) return response.read() - except: + except Exception: # Returning None here will raise an error upstream return None - def update_rates(self, base_currency=currency_code_default()): + def update_rates(self, base_currency=None): """Set the requested currency codes and get rates.""" + # Set default - see B008 + if base_currency is None: + base_currency = currency_code_default() + symbols = ','.join(currency_codes()) try: diff --git a/InvenTree/InvenTree/helpers.py b/InvenTree/InvenTree/helpers.py index 2a7f6f57c2..69369c9f3b 100644 --- a/InvenTree/InvenTree/helpers.py +++ b/InvenTree/InvenTree/helpers.py @@ -95,7 +95,7 @@ def TestIfImage(img): try: Image.open(img).verify() return True - except: + except Exception: return False diff --git a/InvenTree/InvenTree/management/commands/rebuild_models.py b/InvenTree/InvenTree/management/commands/rebuild_models.py index b93d1b4627..87aa378f0b 100644 --- a/InvenTree/InvenTree/management/commands/rebuild_models.py +++ b/InvenTree/InvenTree/management/commands/rebuild_models.py @@ -17,7 +17,7 @@ class Command(BaseCommand): from part.models import Part Part.objects.rebuild() - except: + except Exception: print("Error rebuilding Part objects") # Part category @@ -26,7 +26,7 @@ class Command(BaseCommand): from part.models import PartCategory PartCategory.objects.rebuild() - except: + except Exception: print("Error rebuilding PartCategory objects") # StockItem model @@ -35,7 +35,7 @@ class Command(BaseCommand): from stock.models import StockItem StockItem.objects.rebuild() - except: + except Exception: print("Error rebuilding StockItem objects") # StockLocation model @@ -44,7 +44,7 @@ class Command(BaseCommand): from stock.models import StockLocation StockLocation.objects.rebuild() - except: + except Exception: print("Error rebuilding StockLocation objects") # Build model @@ -53,5 +53,5 @@ class Command(BaseCommand): from build.models import Build Build.objects.rebuild() - except: + except Exception: print("Error rebuilding Build objects") diff --git a/InvenTree/InvenTree/metadata.py b/InvenTree/InvenTree/metadata.py index 473438b5df..924d528fc0 100644 --- a/InvenTree/InvenTree/metadata.py +++ b/InvenTree/InvenTree/metadata.py @@ -137,7 +137,7 @@ class InvenTreeMetadata(SimpleMetadata): if callable(default): try: default = default() - except: + except Exception: continue serializer_info[name]['default'] = default diff --git a/InvenTree/InvenTree/middleware.py b/InvenTree/InvenTree/middleware.py index 60df027bf5..c00d5dc5c5 100644 --- a/InvenTree/InvenTree/middleware.py +++ b/InvenTree/InvenTree/middleware.py @@ -98,7 +98,7 @@ class AuthRequiredMiddleware(object): if path not in urls and not any([path.startswith(p) for p in paths_ignore]): # Save the 'next' parameter to pass through to the login view - return redirect('{}?next={}'.format(reverse_lazy('account_login'), request.path)) + return redirect(f'{reverse_lazy("account_login")}?next={request.path}') else: # Return a 401 (Unauthorized) response code for this request diff --git a/InvenTree/InvenTree/models.py b/InvenTree/InvenTree/models.py index a2b775f71b..2a089685ef 100644 --- a/InvenTree/InvenTree/models.py +++ b/InvenTree/InvenTree/models.py @@ -133,7 +133,7 @@ def extract_int(reference, clip=0x7fffffff): ref = result.groups()[0] try: ref_int = int(ref) - except: + except Exception: ref_int = 0 # Ensure that the returned values are within the range that can be stored in an IntegerField @@ -276,7 +276,7 @@ class InvenTreeAttachment(models.Model): os.rename(old_file, new_file) self.attachment.name = os.path.join(self.getSubdir(), fn) self.save() - except: + except Exception: raise ValidationError(_("Error renaming file")) class Meta: diff --git a/InvenTree/InvenTree/serializers.py b/InvenTree/InvenTree/serializers.py index 22235bd3d8..aea55fbbd9 100644 --- a/InvenTree/InvenTree/serializers.py +++ b/InvenTree/InvenTree/serializers.py @@ -47,7 +47,7 @@ class InvenTreeMoneySerializer(MoneyField): try: if amount is not None and amount is not empty: amount = Decimal(amount) - except: + except Exception: raise ValidationError({ self.field_name: [_("Must be a valid number")], }) @@ -120,7 +120,7 @@ class InvenTreeModelSerializer(serializers.ModelSerializer): if callable(value): try: value = value() - except: + except Exception: continue data[field_name] = value @@ -150,7 +150,7 @@ class InvenTreeModelSerializer(serializers.ModelSerializer): if callable(value): try: value = value() - except: + except Exception: continue initials[field_name] = value @@ -302,7 +302,7 @@ class InvenTreeDecimalField(serializers.FloatField): # Convert the value to a string, and then a decimal try: return Decimal(str(data)) - except: + except Exception: raise serializers.ValidationError(_("Invalid value")) @@ -423,7 +423,7 @@ class DataFileUploadSerializer(serializers.Serializer): if self.TARGET_MODEL: try: model_fields = self.TARGET_MODEL.get_import_fields() - except: + except Exception: pass # Extract a list of valid model field names @@ -515,7 +515,7 @@ class DataFileExtractSerializer(serializers.Serializer): if self.TARGET_MODEL: try: model_fields = self.TARGET_MODEL.get_import_fields() - except: + except Exception: model_fields = {} rows = [] @@ -568,7 +568,7 @@ class DataFileExtractSerializer(serializers.Serializer): if self.TARGET_MODEL: try: model_fields = self.TARGET_MODEL.get_import_fields() - except: + except Exception: model_fields = {} cols_seen = set() diff --git a/InvenTree/InvenTree/tasks.py b/InvenTree/InvenTree/tasks.py index 35893af2c9..da257f49cf 100644 --- a/InvenTree/InvenTree/tasks.py +++ b/InvenTree/InvenTree/tasks.py @@ -242,7 +242,7 @@ def update_exchange_rates(): # Apps not yet loaded! logger.info("Could not perform 'update_exchange_rates' - App registry not ready") return - except: # pragma: no cover + except Exception: # pragma: no cover # Other error? return @@ -251,7 +251,7 @@ def update_exchange_rates(): backend = ExchangeBackend.objects.get(name='InvenTreeExchange') except ExchangeBackend.DoesNotExist: pass - except: # pragma: no cover + except Exception: # pragma: no cover # Some other error logger.warning("update_exchange_rates: Database not ready") return diff --git a/InvenTree/InvenTree/tests.py b/InvenTree/InvenTree/tests.py index c31be5bfce..07422b98f3 100644 --- a/InvenTree/InvenTree/tests.py +++ b/InvenTree/InvenTree/tests.py @@ -417,7 +417,7 @@ class CurrencyTests(TestCase): update_successful = False # Note: the update sometimes fails in CI, let's give it a few chances - for idx in range(10): + for _ in range(10): InvenTree.tasks.update_exchange_rates() rates = Rate.objects.all() @@ -469,12 +469,20 @@ class TestSettings(helpers.InvenTreeTestCase): superuser = True - def in_env_context(self, envs={}): + def in_env_context(self, envs=None): """Patch the env to include the given dict.""" + # Set default - see B006 + if envs is None: + envs = {} + return mock.patch.dict(os.environ, envs) - def run_reload(self, envs={}): + def run_reload(self, envs=None): """Helper function to reload InvenTree.""" + # Set default - see B006 + if envs is None: + envs = {} + from plugin import registry with self.in_env_context(envs): diff --git a/InvenTree/InvenTree/validators.py b/InvenTree/InvenTree/validators.py index bd4c6d1485..c66cd0b0cc 100644 --- a/InvenTree/InvenTree/validators.py +++ b/InvenTree/InvenTree/validators.py @@ -92,7 +92,7 @@ def validate_sales_order_reference(value): def validate_tree_name(value): """Prevent illegal characters in tree item names.""" - for c in "!@#$%^&*'\"\\/[]{}<>,|+=~`\"": + for c in "!@#$%^&*'\"\\/[]{}<>,|+=~`\"": # noqa: P103 if c in str(value): raise ValidationError(_('Illegal character in name ({x})'.format(x=c))) diff --git a/InvenTree/InvenTree/version.py b/InvenTree/InvenTree/version.py index 3bcb3293bb..6ee0f00261 100644 --- a/InvenTree/InvenTree/version.py +++ b/InvenTree/InvenTree/version.py @@ -99,7 +99,7 @@ def inventreeCommitHash(): try: return str(subprocess.check_output('git rev-parse --short HEAD'.split()), 'utf-8').strip() - except: # pragma: no cover + except Exception: # pragma: no cover return None @@ -114,5 +114,5 @@ def inventreeCommitDate(): try: d = str(subprocess.check_output('git show -s --format=%ci'.split()), 'utf-8').strip() return d.split(' ')[0] - except: # pragma: no cover + except Exception: # pragma: no cover return None diff --git a/InvenTree/InvenTree/views.py b/InvenTree/InvenTree/views.py index c2463f0b5e..2088d5bc20 100644 --- a/InvenTree/InvenTree/views.py +++ b/InvenTree/InvenTree/views.py @@ -527,7 +527,7 @@ class AjaxDeleteView(AjaxMixin, UpdateView): """Return object matched to the model of the calling class.""" try: self.object = self.model.objects.get(pk=self.kwargs['pk']) - except: + except Exception: return None return self.object @@ -691,14 +691,14 @@ class SettingsView(TemplateView): try: backend = ExchangeBackend.objects.get(name='InvenTreeExchange') ctx["rates_updated"] = backend.last_update - except: + except Exception: ctx["rates_updated"] = None # load locale stats STAT_FILE = os.path.abspath(os.path.join(settings.BASE_DIR, 'InvenTree/locale_stats.json')) try: ctx["locale_stats"] = json.load(open(STAT_FILE, 'r')) - except: + except Exception: ctx["locale_stats"] = {} # Forms and context for allauth diff --git a/InvenTree/build/api.py b/InvenTree/build/api.py index 6703c9a511..5d095d9e8f 100644 --- a/InvenTree/build/api.py +++ b/InvenTree/build/api.py @@ -223,7 +223,7 @@ class BuildUnallocate(generics.CreateAPIView): try: ctx['build'] = Build.objects.get(pk=self.kwargs.get('pk', None)) - except: + except Exception: pass ctx['request'] = self.request @@ -243,7 +243,7 @@ class BuildOrderContextMixin: try: ctx['build'] = Build.objects.get(pk=self.kwargs.get('pk', None)) - except: + except Exception: pass return ctx diff --git a/InvenTree/build/migrations/0032_auto_20211014_0632.py b/InvenTree/build/migrations/0032_auto_20211014_0632.py index 8842e25cc7..ea6d5c954d 100644 --- a/InvenTree/build/migrations/0032_auto_20211014_0632.py +++ b/InvenTree/build/migrations/0032_auto_20211014_0632.py @@ -21,7 +21,7 @@ def build_refs(apps, schema_editor): if result and len(result.groups()) == 1: try: ref = int(result.groups()[0]) - except: # pragma: no cover + except Exception: # pragma: no cover ref = 0 build.reference_int = ref diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py index cc81fd7f26..cbcfc72c87 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -1244,13 +1244,13 @@ class BuildItem(models.Model): try: # Try to extract the thumbnail thumb_url = self.stock_item.part.image.thumbnail.url - except: + except Exception: pass if thumb_url is None and self.bom_item and self.bom_item.sub_part: try: thumb_url = self.bom_item.sub_part.image.thumbnail.url - except: + except Exception: pass if thumb_url is not None: diff --git a/InvenTree/build/test_api.py b/InvenTree/build/test_api.py index bd969bcea9..c565506eae 100644 --- a/InvenTree/build/test_api.py +++ b/InvenTree/build/test_api.py @@ -195,7 +195,7 @@ class BuildTest(BuildAPITest): self.assertEqual(self.build.incomplete_outputs.count(), 0) # Create some more build outputs - for ii in range(10): + for _ in range(10): self.build.create_build_output(10) # Check that we are in a known state diff --git a/InvenTree/common/apps.py b/InvenTree/common/apps.py index 664fc430e2..16897db534 100644 --- a/InvenTree/common/apps.py +++ b/InvenTree/common/apps.py @@ -27,5 +27,5 @@ class CommonConfig(AppConfig): if common.models.InvenTreeSetting.get_setting('SERVER_RESTART_REQUIRED', backup_value=False, create=False): logger.info("Clearing SERVER_RESTART_REQUIRED flag") common.models.InvenTreeSetting.set_setting('SERVER_RESTART_REQUIRED', False, None) - except: + except Exception: pass diff --git a/InvenTree/common/files.py b/InvenTree/common/files.py index 5a4c5a975c..786b49e782 100644 --- a/InvenTree/common/files.py +++ b/InvenTree/common/files.py @@ -142,7 +142,7 @@ class FileManager: guess = self.guess_header(header, threshold=95) # Check if already present guess_exists = False - for idx, data in enumerate(headers): + for _idx, data in enumerate(headers): if guess == data['guess']: guess_exists = True break diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index 82f6603a66..bf991fe370 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -571,7 +571,7 @@ class BaseInvenTreeSetting(models.Model): # If a valid class has been found, see if it has registered an API URL try: return model_class.get_api_url() - except: + except Exception: pass return None diff --git a/InvenTree/common/views.py b/InvenTree/common/views.py index 3fbbceee37..b356c5cb94 100644 --- a/InvenTree/common/views.py +++ b/InvenTree/common/views.py @@ -495,8 +495,12 @@ class FileManagementAjaxView(AjaxView): self.storage.current_step = self.steps.first return self.renderJsonResponse(request) - def renderJsonResponse(self, request, form=None, data={}, context=None): + def renderJsonResponse(self, request, form=None, data=None, context=None): """Always set the right templates before rendering.""" + # Set default - see B006 + if data is None: + data = {} + self.setTemplate() return super().renderJsonResponse(request, form=form, data=data, context=context) diff --git a/InvenTree/company/views.py b/InvenTree/company/views.py index b967d8e0d2..4716e8408b 100644 --- a/InvenTree/company/views.py +++ b/InvenTree/company/views.py @@ -151,7 +151,7 @@ class CompanyImageDownloadFromURL(AjaxUpdateView): try: self.image = Image.open(response.raw).convert() self.image.verify() - except: + except Exception: form.add_error('url', _("Supplied URL is not a valid image file")) return diff --git a/InvenTree/label/api.py b/InvenTree/label/api.py index 2816572bd5..311e3fe53b 100644 --- a/InvenTree/label/api.py +++ b/InvenTree/label/api.py @@ -363,7 +363,7 @@ class StockLocationLabelList(LabelListView, StockLocationLabelMixin): # Filter string defined for the StockLocationLabel object try: filters = InvenTree.helpers.validateFilterString(label.filters) - except: # pragma: no cover + except Exception: # pragma: no cover # Skip if there was an error validating the filters... continue diff --git a/InvenTree/label/test_api.py b/InvenTree/label/test_api.py index 25277c964b..3c94c89fb6 100644 --- a/InvenTree/label/test_api.py +++ b/InvenTree/label/test_api.py @@ -22,8 +22,12 @@ class TestReportTests(InvenTreeAPITestCase): list_url = reverse('api-stockitem-testreport-list') - def do_list(self, filters={}): + def do_list(self, filters=None): """Helper function to request list of labels with provided filters""" + # Set default - see B006 + if filters is None: + filters = {} + response = self.client.get(self.list_url, filters, format='json') self.assertEqual(response.status_code, 200) diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index 7b78033da8..4303979d42 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -295,7 +295,7 @@ class PurchaseOrderContextMixin: # Pass the purchase order through to the serializer for validation try: context['order'] = models.PurchaseOrder.objects.get(pk=self.kwargs.get('pk', None)) - except: + except Exception: pass context['request'] = self.request @@ -857,7 +857,7 @@ class SalesOrderContextMixin: try: ctx['order'] = models.SalesOrder.objects.get(pk=self.kwargs.get('pk', None)) - except: + except Exception: pass return ctx @@ -1050,7 +1050,7 @@ class SalesOrderShipmentComplete(generics.CreateAPIView): ctx['shipment'] = models.SalesOrderShipment.objects.get( pk=self.kwargs.get('pk', None) ) - except: + except Exception: pass return ctx diff --git a/InvenTree/order/migrations/0052_auto_20211014_0631.py b/InvenTree/order/migrations/0052_auto_20211014_0631.py index fda4335e08..94a591d3d6 100644 --- a/InvenTree/order/migrations/0052_auto_20211014_0631.py +++ b/InvenTree/order/migrations/0052_auto_20211014_0631.py @@ -20,7 +20,7 @@ def build_refs(apps, schema_editor): if result and len(result.groups()) == 1: try: ref = int(result.groups()[0]) - except: # pragma: no cover + except Exception: # pragma: no cover ref = 0 order.reference_int = ref @@ -37,7 +37,7 @@ def build_refs(apps, schema_editor): if result and len(result.groups()) == 1: try: ref = int(result.groups()[0]) - except: # pragma: no cover + except Exception: # pragma: no cover ref = 0 order.reference_int = ref diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index e46c7a5339..bba4e91909 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -154,7 +154,7 @@ class Order(MetadataMixin, ReferenceIndexingMixin): notes = MarkdownxField(blank=True, verbose_name=_('Notes'), help_text=_('Order notes')) - def get_total_price(self, target_currency=currency_code_default()): + def get_total_price(self, target_currency=None): """Calculates the total price of all order lines, and converts to the specified target currency. If not specified, the default system currency is used. @@ -162,6 +162,10 @@ class Order(MetadataMixin, ReferenceIndexingMixin): If currency conversion fails (e.g. there are no valid conversion rates), then we simply return zero, rather than attempting some other calculation. """ + # Set default - see B008 + if target_currency is None: + target_currency = currency_code_default() + total = Money(0, target_currency) # gather name reference diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index cfac04fa03..9e50cabe3a 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -606,7 +606,7 @@ class PartCopyBOM(generics.CreateAPIView): try: ctx['part'] = Part.objects.get(pk=self.kwargs.get('pk', None)) - except: + except Exception: pass return ctx @@ -1042,12 +1042,12 @@ class PartList(APIDownloadMixin, generics.ListCreateAPIView): try: manufacturer = Company.objects.get(pk=request.data.get('manufacturer', None)) - except: + except Exception: manufacturer = None try: supplier = Company.objects.get(pk=request.data.get('supplier', None)) - except: + except Exception: supplier = None mpn = str(request.data.get('MPN', '')).strip() diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index 436745eadb..912541fbc0 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -593,7 +593,7 @@ class Part(MetadataMixin, MPTTModel): try: latest = int(latest) return latest - except: + except Exception: # not an integer so 0 return 0 @@ -610,7 +610,7 @@ class Part(MetadataMixin, MPTTModel): # Attempt to turn into an integer try: latest = int(latest) - except: + except Exception: pass if type(latest) is int: @@ -2283,7 +2283,7 @@ class PartTestTemplate(models.Model): def validate_template_name(name): """Prevent illegal characters in "name" field for PartParameterTemplate.""" - for c in "!@#$%^&*()<>{}[].,?/\\|~`_+-=\'\"": + for c in "!@#$%^&*()<>{}[].,?/\\|~`_+-=\'\"": # noqa: P103 if c in str(name): raise ValidationError(_(f"Illegal character in template name ({c})")) diff --git a/InvenTree/part/serializers.py b/InvenTree/part/serializers.py index 57a840855e..c2e674db89 100644 --- a/InvenTree/part/serializers.py +++ b/InvenTree/part/serializers.py @@ -902,7 +902,7 @@ class BomImportExtractSerializer(DataFileExtractSerializer): if level != 1: # Skip this row return None - except: + except Exception: pass # Attempt to extract a valid part based on the provided data @@ -954,7 +954,7 @@ class BomImportExtractSerializer(DataFileExtractSerializer): if quantity <= 0: row['errors']['quantity'] = _('Quantity must be greater than zero') - except: + except Exception: row['errors']['quantity'] = _('Invalid quantity') return row diff --git a/InvenTree/part/templatetags/inventree_extras.py b/InvenTree/part/templatetags/inventree_extras.py index e48c6f89c6..4f250959ed 100644 --- a/InvenTree/part/templatetags/inventree_extras.py +++ b/InvenTree/part/templatetags/inventree_extras.py @@ -412,7 +412,7 @@ def primitive_to_javascript(primitive): else: # Wrap with quotes - return format_html("'{}'", primitive) + return format_html("'{}'", primitive) # noqa: P103 @register.filter @@ -458,7 +458,7 @@ def authorized_owners(group): def object_link(url_name, pk, ref): """Return highlighted link to object.""" ref_url = reverse(url_name, kwargs={'pk': pk}) - return mark_safe('{}'.format(ref_url, ref)) + return mark_safe(f'{ref}') @register.simple_tag() diff --git a/InvenTree/part/test_api.py b/InvenTree/part/test_api.py index 0df4fefc72..1c8aa694d3 100644 --- a/InvenTree/part/test_api.py +++ b/InvenTree/part/test_api.py @@ -1285,7 +1285,7 @@ class PartAPIAggregationTest(InvenTreeAPITestCase): self.assertEqual(data['stock_item_count'], 4) # Add some more stock items!! - for i in range(100): + for _ in range(100): StockItem.objects.create(part=self.part, quantity=5) # Add another stock item which is assigned to a customer (and shouldn't count) @@ -1628,7 +1628,7 @@ class BomItemTest(InvenTreeAPITestCase): Part.objects.rebuild() # Create some stock items for this new part - for jj in range(ii): + for _ in range(ii): StockItem.objects.create( part=variant, location=loc, diff --git a/InvenTree/part/test_bom_import.py b/InvenTree/part/test_bom_import.py index 71f47510a1..73410ea350 100644 --- a/InvenTree/part/test_bom_import.py +++ b/InvenTree/part/test_bom_import.py @@ -228,7 +228,7 @@ class BomUploadTest(InvenTreeAPITestCase): components = Part.objects.filter(component=True) - for idx, cmp in enumerate(components): + for idx, _ in enumerate(components): dataset.append([ f"Component {idx}", 10, @@ -257,7 +257,7 @@ class BomUploadTest(InvenTreeAPITestCase): dataset.headers = ['part_ipn', 'quantity'] - for idx, cmp in enumerate(components): + for idx, _ in enumerate(components): dataset.append([ f"CMP_{idx}", 10, diff --git a/InvenTree/part/test_part.py b/InvenTree/part/test_part.py index 46f1473983..fea5cf6012 100644 --- a/InvenTree/part/test_part.py +++ b/InvenTree/part/test_part.py @@ -190,7 +190,7 @@ class PartTest(TestCase): try: part.save() self.assertTrue(False) # pragma: no cover - except: + except Exception: pass self.assertEqual(Part.objects.count(), n + 1) diff --git a/InvenTree/part/views.py b/InvenTree/part/views.py index e2698044f6..d67e72f4cc 100644 --- a/InvenTree/part/views.py +++ b/InvenTree/part/views.py @@ -618,7 +618,7 @@ class PartImageDownloadFromURL(AjaxUpdateView): try: self.image = Image.open(response.raw).convert() self.image.verify() - except: + except Exception: form.add_error('url', _("Supplied URL is not a valid image file")) return diff --git a/InvenTree/plugin/apps.py b/InvenTree/plugin/apps.py index 374be254e5..405b8cfcd2 100644 --- a/InvenTree/plugin/apps.py +++ b/InvenTree/plugin/apps.py @@ -39,7 +39,7 @@ class PluginAppConfig(AppConfig): if InvenTreeSetting.get_setting('PLUGIN_ON_STARTUP', create=False): # make sure all plugins are installed registry.install_plugin_file() - except: # pragma: no cover + except Exception: # pragma: no cover pass # get plugins and init them diff --git a/InvenTree/plugin/base/integration/mixins.py b/InvenTree/plugin/base/integration/mixins.py index 2a41074b29..b4565e0dbc 100644 --- a/InvenTree/plugin/base/integration/mixins.py +++ b/InvenTree/plugin/base/integration/mixins.py @@ -200,7 +200,7 @@ class ScheduleMixin: try: from django_q.models import Schedule - for key, task in self.scheduled_tasks.items(): + for key, _ in self.scheduled_tasks.items(): task_name = self.get_task_name(key) diff --git a/InvenTree/plugin/helpers.py b/InvenTree/plugin/helpers.py index 247ae72654..f776bf95b8 100644 --- a/InvenTree/plugin/helpers.py +++ b/InvenTree/plugin/helpers.py @@ -169,7 +169,7 @@ class GitStatus: def get_modules(pkg): """Get all modules in a package.""" context = {} - for loader, name, ispkg in pkgutil.walk_packages(pkg.__path__): + for loader, name, _ in pkgutil.walk_packages(pkg.__path__): try: module = loader.find_module(name).load_module(name) pkg_names = getattr(module, '__all__', None) diff --git a/InvenTree/plugin/registry.py b/InvenTree/plugin/registry.py index 574cf654ff..7443191cb6 100644 --- a/InvenTree/plugin/registry.py +++ b/InvenTree/plugin/registry.py @@ -382,7 +382,7 @@ class PluginsRegistry: if settings.PLUGIN_TESTING or InvenTreeSetting.get_setting('ENABLE_PLUGINS_SCHEDULE'): - for slug, plugin in plugins: + for _, plugin in plugins: if plugin.mixin_enabled('schedule'): config = plugin.plugin_config() @@ -437,7 +437,7 @@ class PluginsRegistry: apps_changed = False # add them to the INSTALLED_APPS - for slug, plugin in plugins: + for _, plugin in plugins: if plugin.mixin_enabled('app'): plugin_path = self._get_plugin_path(plugin) if plugin_path not in settings.INSTALLED_APPS: @@ -522,7 +522,7 @@ class PluginsRegistry: # remove model from admin site try: admin.site.unregister(model) - except: # pragma: no cover + except Exception: # pragma: no cover pass models += [model._meta.model_name] except LookupError: # pragma: no cover diff --git a/InvenTree/plugin/samples/integration/custom_panel_sample.py b/InvenTree/plugin/samples/integration/custom_panel_sample.py index a3228582e6..0ef2086029 100644 --- a/InvenTree/plugin/samples/integration/custom_panel_sample.py +++ b/InvenTree/plugin/samples/integration/custom_panel_sample.py @@ -113,7 +113,7 @@ class CustomPanelSample(PanelMixin, SettingsMixin, InvenTreePlugin): 'icon': 'fa-user', 'content_template': 'panel_demo/childless.html', # Note that the panel content is rendered using a template file! }) - except: # pragma: no cover + except Exception: # pragma: no cover pass return panels diff --git a/InvenTree/plugin/templatetags/plugin_extras.py b/InvenTree/plugin/templatetags/plugin_extras.py index 35d4db5e17..94ccef8116 100644 --- a/InvenTree/plugin/templatetags/plugin_extras.py +++ b/InvenTree/plugin/templatetags/plugin_extras.py @@ -57,7 +57,7 @@ def safe_url(view_name, *args, **kwargs): """ try: return reverse(view_name, args=args, kwargs=kwargs) - except: + except Exception: return None diff --git a/InvenTree/report/api.py b/InvenTree/report/api.py index 79c2d098e5..96a6cd34e5 100644 --- a/InvenTree/report/api.py +++ b/InvenTree/report/api.py @@ -289,7 +289,7 @@ class StockItemTestReportList(ReportListView, StockItemReportMixin): # Filter string defined for the report object try: filters = InvenTree.helpers.validateFilterString(report.filters) - except: + except Exception: continue for item in items: @@ -528,7 +528,7 @@ class PurchaseOrderReportList(ReportListView, OrderReportMixin): # Filter string defined for the report object try: filters = InvenTree.helpers.validateFilterString(report.filters) - except: + except Exception: continue for o in orders: @@ -607,7 +607,7 @@ class SalesOrderReportList(ReportListView, OrderReportMixin): # Filter string defined for the report object try: filters = InvenTree.helpers.validateFilterString(report.filters) - except: + except Exception: continue for o in orders: diff --git a/InvenTree/report/apps.py b/InvenTree/report/apps.py index 9e91627e62..1b1e402746 100644 --- a/InvenTree/report/apps.py +++ b/InvenTree/report/apps.py @@ -75,14 +75,14 @@ class ReportConfig(AppConfig): enabled=True ) - except: + except Exception: pass def create_default_test_reports(self): """Create database entries for the default TestReport templates, if they do not already exist.""" try: from .models import TestReport - except: # pragma: no cover + except Exception: # pragma: no cover # Database is not ready yet return @@ -101,7 +101,7 @@ class ReportConfig(AppConfig): """Create database entries for the default BuildReport templates (if they do not already exist)""" try: from .models import BuildReport - except: # pragma: no cover + except Exception: # pragma: no cover # Database is not ready yet return diff --git a/InvenTree/stock/api.py b/InvenTree/stock/api.py index c955fa12d6..53205dd7b9 100644 --- a/InvenTree/stock/api.py +++ b/InvenTree/stock/api.py @@ -99,7 +99,7 @@ class StockItemContextMixin: try: context['item'] = StockItem.objects.get(pk=self.kwargs.get('pk', None)) - except: + except Exception: pass return context @@ -830,7 +830,7 @@ class StockList(APIDownloadMixin, generics.ListCreateAPIView): if part.tree_id is not None: queryset = queryset.filter(part__tree_id=part.tree_id) - except: + except Exception: pass # Filter by 'allocated' parts? @@ -1144,7 +1144,7 @@ class StockItemTestResultList(generics.ListCreateAPIView): """Set context before returning serializer.""" try: kwargs['user_detail'] = str2bool(self.request.query_params.get('user_detail', False)) - except: + except Exception: pass kwargs['context'] = self.get_serializer_context() @@ -1186,12 +1186,12 @@ class StockTrackingList(generics.ListAPIView): """Set context before returning serializer.""" try: kwargs['item_detail'] = str2bool(self.request.query_params.get('item_detail', False)) - except: + except Exception: pass try: kwargs['user_detail'] = str2bool(self.request.query_params.get('user_detail', False)) - except: + except Exception: pass kwargs['context'] = self.get_serializer_context() @@ -1219,7 +1219,7 @@ class StockTrackingList(generics.ListAPIView): part = Part.objects.get(pk=deltas['part']) serializer = PartBriefSerializer(part) deltas['part_detail'] = serializer.data - except: + except Exception: pass # Add location detail @@ -1228,7 +1228,7 @@ class StockTrackingList(generics.ListAPIView): location = StockLocation.objects.get(pk=deltas['location']) serializer = StockSerializers.LocationSerializer(location) deltas['location_detail'] = serializer.data - except: + except Exception: pass # Add stockitem detail @@ -1237,7 +1237,7 @@ class StockTrackingList(generics.ListAPIView): stockitem = StockItem.objects.get(pk=deltas['stockitem']) serializer = StockSerializers.StockItemSerializer(stockitem) deltas['stockitem_detail'] = serializer.data - except: + except Exception: pass # Add customer detail @@ -1246,7 +1246,7 @@ class StockTrackingList(generics.ListAPIView): customer = Company.objects.get(pk=deltas['customer']) serializer = CompanySerializer(customer) deltas['customer_detail'] = serializer.data - except: + except Exception: pass # Add purchaseorder detail @@ -1255,7 +1255,7 @@ class StockTrackingList(generics.ListAPIView): order = PurchaseOrder.objects.get(pk=deltas['purchaseorder']) serializer = PurchaseOrderSerializer(order) deltas['purchaseorder_detail'] = serializer.data - except: + except Exception: pass if request.is_ajax(): diff --git a/InvenTree/stock/migrations/0061_auto_20210511_0911.py b/InvenTree/stock/migrations/0061_auto_20210511_0911.py index 887bff0ea8..b788d29eae 100644 --- a/InvenTree/stock/migrations/0061_auto_20210511_0911.py +++ b/InvenTree/stock/migrations/0061_auto_20210511_0911.py @@ -56,7 +56,7 @@ def update_history(apps, schema_editor): try: deltas['quantity']: float(q) updated = True - except: + except Exception: print(f"WARNING: Error converting quantity '{q}'") @@ -89,7 +89,7 @@ def update_history(apps, schema_editor): # Ensure that 'quantity' is stored too in this case deltas['quantity'] = float(q) - except: + except Exception: print(f"WARNING: Error converting removed quantity '{removed}'") else: print(f"Could not decode '{title}'") @@ -168,7 +168,7 @@ def update_history(apps, schema_editor): # Ensure that 'quantity' is stored too in this case deltas['quantity'] = float(q) - except: + except Exception: print(f"WARNING: Error converting added quantity '{added}'") else: diff --git a/InvenTree/stock/migrations/0069_auto_20211109_2347.py b/InvenTree/stock/migrations/0069_auto_20211109_2347.py index 748ac8d4cd..e4e8128f1c 100644 --- a/InvenTree/stock/migrations/0069_auto_20211109_2347.py +++ b/InvenTree/stock/migrations/0069_auto_20211109_2347.py @@ -25,7 +25,7 @@ def update_serials(apps, schema_editor): if result and len(result.groups()) == 1: try: serial = int(result.groups()[0]) - except: + except Exception: serial = 0 diff --git a/InvenTree/stock/models.py b/InvenTree/stock/models.py index c3801dee42..5093ce9bcb 100644 --- a/InvenTree/stock/models.py +++ b/InvenTree/stock/models.py @@ -1300,8 +1300,12 @@ class StockItem(MetadataMixin, MPTTModel): item.save() @transaction.atomic - def copyTestResultsFrom(self, other, filters={}): + def copyTestResultsFrom(self, other, filters=None): """Copy all test results from another StockItem.""" + # Set default - see B006 + if filters is None: + filters = {} + for result in other.test_results.all().filter(**filters): # Create a copy of the test result by nulling-out the pk diff --git a/InvenTree/stock/tests.py b/InvenTree/stock/tests.py index edeea46486..ec197e9f8b 100644 --- a/InvenTree/stock/tests.py +++ b/InvenTree/stock/tests.py @@ -90,7 +90,7 @@ class StockTest(InvenTreeTestCase): build = Build.objects.create(reference='12345', part=part, title='A test build', quantity=1) # Add some stock items which are "building" - for i in range(10): + for _ in range(10): StockItem.objects.create( part=part, build=build, quantity=10, is_building=True @@ -439,7 +439,7 @@ class StockTest(InvenTreeTestCase): serial=i, quantity=1, ) - except: + except Exception: pass item_next = item.get_next_serialized_item() @@ -616,7 +616,7 @@ class StockTest(InvenTreeTestCase): # - C32 should move directly under A # Add some stock items to B3 - for i in range(10): + for _ in range(10): StockItem.objects.create( part=Part.objects.get(pk=1), quantity=10, diff --git a/InvenTree/users/models.py b/InvenTree/users/models.py index 48b35e4562..24c8a6d062 100644 --- a/InvenTree/users/models.py +++ b/InvenTree/users/models.py @@ -538,14 +538,14 @@ class Owner(models.Model): try: owners.append(cls.objects.get(owner_id=user.pk, owner_type=user_type)) - except: # pragma: no cover + except Exception: # pragma: no cover pass for group in user.groups.all(): try: owner = cls.objects.get(owner_id=group.pk, owner_type=group_type) owners.append(owner) - except: # pragma: no cover + except Exception: # pragma: no cover pass return owners diff --git a/ci/check_js_templates.py b/ci/check_js_templates.py index 5fd7521c55..54cd274afb 100644 --- a/ci/check_js_templates.py +++ b/ci/check_js_templates.py @@ -24,7 +24,7 @@ print("=================================") def check_invalid_tag(data): - + """Check for invalid tags.""" pattern = r"{%(\w+)" err_count = 0 @@ -42,7 +42,7 @@ def check_invalid_tag(data): def check_prohibited_tags(data): - + """Check for prohibited tags.""" allowed_tags = [ 'if', 'elif', diff --git a/ci/version_check.py b/ci/version_check.py index c9f05a1a13..1b0aed83ff 100644 --- a/ci/version_check.py +++ b/ci/version_check.py @@ -1,6 +1,6 @@ -""" -Ensure that the release tag matches the InvenTree version number: +"""Ensure that the release tag matches the InvenTree version number. +Behaviour: master / main branch: - version number must end with 'dev' diff --git a/docker/gunicorn.conf.py b/docker/gunicorn.conf.py index 291f3ff198..50f9f70084 100644 --- a/docker/gunicorn.conf.py +++ b/docker/gunicorn.conf.py @@ -1,3 +1,5 @@ +"""Gunicorn configuration for InvenTree.""" + import logging import multiprocessing import os diff --git a/setup.cfg b/setup.cfg index 3386be2230..e1269ae43f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -19,6 +19,8 @@ ignore = D202, # - D415 - First line should end with a period, question mark, or exclamation point D415, + # - B009 - Do not call getattr with a constant attribute value + B009 exclude = .git,__pycache__,*/migrations/*,*/lib/*,*/bin/*,*/media/*,*/static/*,InvenTree/plugins/* per-file-ignores = # Do not enforce docstring on __init__ diff --git a/tasks.py b/tasks.py index a9036e460b..e7600ae520 100644 --- a/tasks.py +++ b/tasks.py @@ -1,3 +1,5 @@ +"""Tasks for automating certain actions and interacting with InvenTree from the CLI.""" + import json import os import pathlib @@ -8,7 +10,7 @@ from invoke import task def apps(): - """Returns a list of installed apps""" + """Returns a list of installed apps.""" return [ 'build', 'common', @@ -43,12 +45,13 @@ def managePyPath(): return os.path.join(managePyDir(), 'manage.py') -def manage(c, cmd, pty=False): +def manage(c, cmd, pty: bool = False): """Runs a given command against django's "manage.py" script. Args: - c - Command line context - cmd - django command to run + c: Command line context. + cmd: Django command to run. + pty (bool, optional): Run an interactive session. Defaults to False. """ c.run('cd "{path}" && python3 manage.py {cmd}'.format( path=managePyDir(), From fe8f111a637eb351d69a330514a0fc75de035320 Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 6 Jun 2022 11:42:22 +1000 Subject: [PATCH 04/13] Delete part via API (#3135) * Updates for the PartRelated model - Deleting a part also deletes the relationships - Add unique_together requirement - Bug fixes - Added unit tests * Adds JS function to delete a part instance * Remove legacy delete view * JS linting --- .../migrations/0078_auto_20220606_0024.py | 28 +++++++ InvenTree/part/models.py | 60 ++++++-------- InvenTree/part/templates/part/part_base.html | 14 ++-- .../part/templates/part/partial_delete.html | 78 ------------------- InvenTree/part/test_part.py | 51 +++++++++++- InvenTree/part/urls.py | 1 - InvenTree/part/views.py | 17 ---- InvenTree/templates/js/translated/part.js | 45 +++++++++++ 8 files changed, 151 insertions(+), 143 deletions(-) create mode 100644 InvenTree/part/migrations/0078_auto_20220606_0024.py delete mode 100644 InvenTree/part/templates/part/partial_delete.html diff --git a/InvenTree/part/migrations/0078_auto_20220606_0024.py b/InvenTree/part/migrations/0078_auto_20220606_0024.py new file mode 100644 index 0000000000..385eb591ce --- /dev/null +++ b/InvenTree/part/migrations/0078_auto_20220606_0024.py @@ -0,0 +1,28 @@ +# Generated by Django 3.2.13 on 2022-06-06 00:24 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('part', '0077_alter_bomitem_unique_together'), + ] + + operations = [ + migrations.AlterField( + model_name='partrelated', + name='part_1', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='related_parts_1', to='part.part', verbose_name='Part 1'), + ), + migrations.AlterField( + model_name='partrelated', + name='part_2', + field=models.ForeignKey(help_text='Select Related Part', on_delete=django.db.models.deletion.CASCADE, related_name='related_parts_2', to='part.part', verbose_name='Part 2'), + ), + migrations.AlterUniqueTogether( + name='partrelated', + unique_together={('part_1', 'part_2')}, + ), + ] diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index 912541fbc0..ebe9f882d6 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -2037,27 +2037,20 @@ class Part(MetadataMixin, MPTTModel): return filtered_parts def get_related_parts(self): - """Return list of tuples for all related parts. - - Includes: - - first value is PartRelated object - - second value is matching Part object - """ - related_parts = [] + """Return a set of all related parts for this part""" + related_parts = set() related_parts_1 = self.related_parts_1.filter(part_1__id=self.pk) related_parts_2 = self.related_parts_2.filter(part_2__id=self.pk) - related_parts.append() - for related_part in related_parts_1: # Add to related parts list - related_parts.append(related_part.part_2) + related_parts.add(related_part.part_2) for related_part in related_parts_2: # Add to related parts list - related_parts.append(related_part.part_1) + related_parts.add(related_part.part_1) return related_parts @@ -2829,44 +2822,35 @@ class BomItemSubstitute(models.Model): class PartRelated(models.Model): """Store and handle related parts (eg. mating connector, crimps, etc.).""" + class Meta: + """Metaclass defines extra model properties""" + unique_together = ('part_1', 'part_2') + part_1 = models.ForeignKey(Part, related_name='related_parts_1', - verbose_name=_('Part 1'), on_delete=models.DO_NOTHING) + verbose_name=_('Part 1'), on_delete=models.CASCADE) part_2 = models.ForeignKey(Part, related_name='related_parts_2', - on_delete=models.DO_NOTHING, + on_delete=models.CASCADE, verbose_name=_('Part 2'), help_text=_('Select Related Part')) def __str__(self): """Return a string representation of this Part-Part relationship""" return f'{self.part_1} <--> {self.part_2}' - def validate(self, part_1, part_2): - """Validate that the two parts relationship is unique.""" - validate = True - - parts = Part.objects.all() - related_parts = PartRelated.objects.all() - - # Check if part exist and there are not the same part - if (part_1 in parts and part_2 in parts) and (part_1.pk != part_2.pk): - # Check if relation exists already - for relation in related_parts: - if (part_1 == relation.part_1 and part_2 == relation.part_2) \ - or (part_1 == relation.part_2 and part_2 == relation.part_1): - validate = False - break - else: - validate = False - - return validate + def save(self, *args, **kwargs): + """Enforce a 'clean' operation when saving a PartRelated instance""" + self.clean() + self.validate_unique() + super().save(*args, **kwargs) def clean(self): """Overwrite clean method to check that relation is unique.""" - validate = self.validate(self.part_1, self.part_2) - if not validate: - error_message = _('Error creating relationship: check that ' - 'the part is not related to itself ' - 'and that the relationship is unique') + super().clean() - raise ValidationError(error_message) + if self.part_1 == self.part_2: + raise ValidationError(_("Part relationship cannot be created between a part and itself")) + + # Check for inverse relationship + if PartRelated.objects.filter(part_1=self.part_2, part_2=self.part_1).exists(): + raise ValidationError(_("Duplicate relationship already exists")) diff --git a/InvenTree/part/templates/part/part_base.html b/InvenTree/part/templates/part/part_base.html index bcf98bef9c..e940d46926 100644 --- a/InvenTree/part/templates/part/part_base.html +++ b/InvenTree/part/templates/part/part_base.html @@ -559,13 +559,13 @@ {% if roles.part.delete %} $("#part-delete").click(function() { - launchModalForm( - "{% url 'part-delete' part.id %}", - { - redirect: {% if part.category %}"{% url 'category-detail' part.category.id %}"{% else %}"{% url 'part-index' %}"{% endif %}, - no_post: {% if part.active %}true{% else %}false{% endif %}, - } - ); + deletePart({{ part.pk }}, { + {% if part.category %} + redirect: '{% url "category-detail" part.category.pk %}', + {% else %} + redirect: '{% url "part-index" %}', + {% endif %} + }); }); {% endif %} diff --git a/InvenTree/part/templates/part/partial_delete.html b/InvenTree/part/templates/part/partial_delete.html deleted file mode 100644 index cd83f8df4f..0000000000 --- a/InvenTree/part/templates/part/partial_delete.html +++ /dev/null @@ -1,78 +0,0 @@ -{% extends "modal_form.html" %} -{% load i18n %} - -{% block pre_form_content %} - -{% if part.active %} - -
- {% blocktrans with full_name=part.full_name %}Part '{{full_name}}' cannot be deleted as it is still marked as active. -
Disable the "Active" part attribute and re-try. - {% endblocktrans %} -
- -{% else %} - -
- {% blocktrans with full_name=part.full_name %}Are you sure you want to delete part '{{full_name}}'?{% endblocktrans %} -
- -{% if part.used_in_count %} -
-

{% blocktrans with count=part.used_in_count %}This part is used in BOMs for {{count}} other parts. If you delete this part, the BOMs for the following parts will be updated{% endblocktrans %}: -

    - {% for child in part.used_in.all %} -
  • {{ child.part.full_name }} - {{ child.part.description }}
  • - {% endfor %} -

    -{% endif %} - -{% if part.stock_items.all|length > 0 %} -
    -

    {% blocktrans with count=part.stock_items.all|length %}There are {{count}} stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:{% endblocktrans %} -

      - {% for stock in part.stock_items.all %} -
    • {{ stock }}
    • - {% endfor %} -
    -

    -{% endif %} - -{% if part.manufacturer_parts.all|length > 0 %} -
    -

    {% blocktrans with count=part.manufacturer_parts.all|length %}There are {{count}} manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:{% endblocktrans %} -

      - {% for spart in part.manufacturer_parts.all %} -
    • {% if spart.manufacturer %}{{ spart.manufacturer.name }} - {% endif %}{{ spart.MPN }}
    • - {% endfor %} -
    -

    -{% endif %} - -{% if part.supplier_parts.all|length > 0 %} -
    -

    {% blocktrans with count=part.supplier_parts.all|length %}There are {{count}} suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:{% endblocktrans %} -

      - {% for spart in part.supplier_parts.all %} - {% if spart.supplier %} -
    • {{ spart.supplier.name }} - {{ spart.SKU }}
    • - {% endif %} - {% endfor %} -
    -

    -{% endif %} - -{% if part.serials.all|length > 0 %} -
    -

    {% blocktrans with count=part.serials.all|length full_name=part.full_name %}There are {{count}} unique parts tracked for '{{full_name}}'. Deleting this part will permanently remove this tracking information.{% endblocktrans %}

    -{% endif %} - -{% endif %} - -{% endblock %} - -{% block form %} -{% if not part.active %} -{{ block.super }} -{% endif %} -{% endblock %} diff --git a/InvenTree/part/test_part.py b/InvenTree/part/test_part.py index fea5cf6012..97e690c535 100644 --- a/InvenTree/part/test_part.py +++ b/InvenTree/part/test_part.py @@ -15,8 +15,8 @@ from common.notifications import UIMessageNotification, storage from InvenTree import version from InvenTree.helpers import InvenTreeTestCase -from .models import (Part, PartCategory, PartCategoryStar, PartStar, - PartTestTemplate, rename_part_image) +from .models import (Part, PartCategory, PartCategoryStar, PartRelated, + PartStar, PartTestTemplate, rename_part_image) from .templatetags import inventree_extras @@ -280,6 +280,53 @@ class PartTest(TestCase): self.assertEqual(len(p.metadata.keys()), 4) + def test_related(self): + """Unit tests for the PartRelated model""" + + # Create a part relationship + PartRelated.objects.create(part_1=self.r1, part_2=self.r2) + self.assertEqual(PartRelated.objects.count(), 1) + + # Creating a duplicate part relationship should fail + with self.assertRaises(ValidationError): + PartRelated.objects.create(part_1=self.r1, part_2=self.r2) + + # Creating an 'inverse' duplicate relationship should also fail + with self.assertRaises(ValidationError): + PartRelated.objects.create(part_1=self.r2, part_2=self.r1) + + # Try to add a self-referential relationship + with self.assertRaises(ValidationError): + PartRelated.objects.create(part_1=self.r2, part_2=self.r2) + + # Test relation lookup for each part + r1_relations = self.r1.get_related_parts() + self.assertEqual(len(r1_relations), 1) + self.assertIn(self.r2, r1_relations) + + r2_relations = self.r2.get_related_parts() + self.assertEqual(len(r2_relations), 1) + self.assertIn(self.r1, r2_relations) + + # Delete a part, ensure the relationship also gets deleted + self.r1.delete() + + self.assertEqual(PartRelated.objects.count(), 0) + self.assertEqual(len(self.r2.get_related_parts()), 0) + + # Add multiple part relationships to self.r2 + for p in Part.objects.all().exclude(pk=self.r2.pk): + PartRelated.objects.create(part_1=p, part_2=self.r2) + + n = Part.objects.count() - 1 + + self.assertEqual(PartRelated.objects.count(), n) + self.assertEqual(len(self.r2.get_related_parts()), n) + + # Deleting r2 should remove *all* relationships + self.r2.delete() + self.assertEqual(PartRelated.objects.count(), 0) + class TestTemplateTest(TestCase): """Unit test for the TestTemplate class""" diff --git a/InvenTree/part/urls.py b/InvenTree/part/urls.py index 9c70b364c9..ac34225c00 100644 --- a/InvenTree/part/urls.py +++ b/InvenTree/part/urls.py @@ -11,7 +11,6 @@ from django.urls import include, re_path from . import views part_detail_urls = [ - re_path(r'^delete/?', views.PartDelete.as_view(), name='part-delete'), re_path(r'^bom-download/?', views.BomDownload.as_view(), name='bom-download'), re_path(r'^pricing/', views.PartPricing.as_view(), name='part-pricing'), diff --git a/InvenTree/part/views.py b/InvenTree/part/views.py index d67e72f4cc..a57f6905bd 100644 --- a/InvenTree/part/views.py +++ b/InvenTree/part/views.py @@ -760,23 +760,6 @@ class BomDownload(AjaxView): } -class PartDelete(AjaxDeleteView): - """View to delete a Part object.""" - - model = Part - ajax_template_name = 'part/partial_delete.html' - ajax_form_title = _('Confirm Part Deletion') - context_object_name = 'part' - - success_url = '/part/' - - def get_data(self): - """Returns custom message once the part deletion has been performed""" - return { - 'danger': _('Part was deleted'), - } - - class PartPricing(AjaxView): """View for inspecting part pricing information.""" diff --git a/InvenTree/templates/js/translated/part.js b/InvenTree/templates/js/translated/part.js index dfc143977d..36ff76d503 100644 --- a/InvenTree/templates/js/translated/part.js +++ b/InvenTree/templates/js/translated/part.js @@ -21,6 +21,7 @@ */ /* exported + deletePart, duplicateBom, duplicatePart, editCategory, @@ -395,6 +396,50 @@ function duplicatePart(pk, options={}) { } +// Launch form to delete a part +function deletePart(pk, options={}) { + + inventreeGet(`/api/part/${pk}/`, {}, { + success: function(part) { + if (part.active) { + showAlertDialog( + '{% trans "Active Part" %}', + '{% trans "Part cannot be deleted as it is currently active" %}', + { + alert_style: 'danger', + } + ); + return; + } + + var thumb = thumbnailImage(part.thumbnail || part.image); + + var html = ` +
    +

    ${thumb} ${part.full_name} - ${part.description}

    + + {% trans "Deleting this part cannot be reversed" %} +
      +
    • {% trans "Any stock items for this part will be deleted" %}
    • +
    • {% trans "This part will be removed from any Bills of Material" %}
    • +
    • {% trans "All manufacturer and supplier information for this part will be deleted" %}
    • +
    `; + + constructForm( + `/api/part/${pk}/`, + { + method: 'DELETE', + title: '{% trans "Delete Part" %}', + preFormContent: html, + onSuccess: function(response) { + handleFormSuccess(response, options); + } + } + ); + } + }); +} + /* Toggle the 'starred' status of a part. * Performs AJAX queries and updates the display on the button. * From 2b1d8f5b79b6643fe3b2af210490b8327f6499c2 Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 6 Jun 2022 13:00:30 +1000 Subject: [PATCH 05/13] Set part category (#3134) * Refactor function to enable / disable submit button on modal forms * Category selection now just uses the AP * Remove unused forms / views * JS linting fixes * remove outdated unit test --- InvenTree/part/forms.py | 11 +-- InvenTree/part/templates/part/category.html | 3 +- .../part/templates/part/set_category.html | 43 ----------- InvenTree/part/test_views.py | 20 ----- InvenTree/part/urls.py | 3 - InvenTree/part/views.py | 75 ------------------ InvenTree/templates/js/translated/bom.js | 2 +- InvenTree/templates/js/translated/forms.js | 10 +-- InvenTree/templates/js/translated/modals.js | 32 ++++---- InvenTree/templates/js/translated/part.js | 77 +++++++++++++++---- 10 files changed, 91 insertions(+), 185 deletions(-) delete mode 100644 InvenTree/part/templates/part/set_category.html diff --git a/InvenTree/part/forms.py b/InvenTree/part/forms.py index fa9983cf3e..8808265412 100644 --- a/InvenTree/part/forms.py +++ b/InvenTree/part/forms.py @@ -3,15 +3,12 @@ from django import forms from django.utils.translation import gettext_lazy as _ -from mptt.fields import TreeNodeChoiceField - from common.forms import MatchItemForm from InvenTree.fields import RoundingDecimalFormField from InvenTree.forms import HelperForm from InvenTree.helpers import clean_decimal -from .models import (Part, PartCategory, PartInternalPriceBreak, - PartSellPriceBreak) +from .models import Part, PartInternalPriceBreak, PartSellPriceBreak class PartImageDownloadForm(HelperForm): @@ -53,12 +50,6 @@ class BomMatchItemForm(MatchItemForm): return super().get_special_field(col_guess, row, file_manager) -class SetPartCategoryForm(forms.Form): - """Form for setting the category of multiple Part objects.""" - - part_category = TreeNodeChoiceField(queryset=PartCategory.objects.all(), required=True, help_text=_('Select part category')) - - class PartPriceForm(forms.Form): """Simple form for viewing part pricing information.""" diff --git a/InvenTree/part/templates/part/category.html b/InvenTree/part/templates/part/category.html index 30c0867968..146b22abcc 100644 --- a/InvenTree/part/templates/part/category.html +++ b/InvenTree/part/templates/part/category.html @@ -165,7 +165,7 @@
    `; + } + + return html; } }, { diff --git a/InvenTree/users/api.py b/InvenTree/users/api.py index 332c5ec67d..11267e4d8f 100644 --- a/InvenTree/users/api.py +++ b/InvenTree/users/api.py @@ -10,8 +10,9 @@ from rest_framework.authtoken.models import Token from rest_framework.response import Response from rest_framework.views import APIView +from InvenTree.serializers import UserSerializer from users.models import Owner, RuleSet, check_user_role -from users.serializers import OwnerSerializer, UserSerializer +from users.serializers import OwnerSerializer class OwnerList(generics.ListAPIView): diff --git a/InvenTree/users/serializers.py b/InvenTree/users/serializers.py index 1ae2dc28e1..bde5cb87db 100644 --- a/InvenTree/users/serializers.py +++ b/InvenTree/users/serializers.py @@ -1,6 +1,5 @@ """DRF API serializers for the 'users' app""" -from django.contrib.auth.models import User from rest_framework import serializers @@ -9,19 +8,6 @@ from InvenTree.serializers import InvenTreeModelSerializer from .models import Owner -class UserSerializer(InvenTreeModelSerializer): - """Serializer for a User.""" - - class Meta: - """Metaclass defines serializer fields.""" - model = User - fields = ('pk', - 'username', - 'first_name', - 'last_name', - 'email',) - - class OwnerSerializer(InvenTreeModelSerializer): """Serializer for an "Owner" (either a "user" or a "group")""" From 92aa7adfecd1d7c4492dc1feb5de9900971a9aba Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 6 Jun 2022 15:21:31 +1000 Subject: [PATCH 07/13] Adds callback for creation of an error log (#3136) * Adds callback for creation of an error log * Fix unit tests --- InvenTree/InvenTree/models.py | 40 +++++++++++++++++++++++++- InvenTree/common/notifications.py | 5 ++-- InvenTree/common/test_notifications.py | 4 +-- 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/InvenTree/InvenTree/models.py b/InvenTree/InvenTree/models.py index 2a089685ef..90d8a0314b 100644 --- a/InvenTree/InvenTree/models.py +++ b/InvenTree/InvenTree/models.py @@ -5,17 +5,21 @@ import os import re from django.conf import settings +from django.contrib.auth import get_user_model from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.db import models -from django.db.models.signals import pre_delete +from django.db.models.signals import post_save, pre_delete from django.dispatch import receiver +from django.urls import reverse from django.utils.translation import gettext_lazy as _ +from error_report.models import Error from mptt.exceptions import InvalidMove from mptt.models import MPTTModel, TreeForeignKey +import InvenTree.helpers from InvenTree.fields import InvenTreeURLField from InvenTree.validators import validate_tree_name @@ -442,3 +446,37 @@ def before_delete_tree_item(sender, instance, using, **kwargs): for child in instance.children.all(): child.parent = instance.parent child.save() + + +@receiver(post_save, sender=Error, dispatch_uid='error_post_save_notification') +def after_error_logged(sender, instance: Error, created: bool, **kwargs): + """Callback when a server error is logged. + + - Send a UI notification to all users with staff status + """ + + if created: + try: + import common.notifications + + users = get_user_model().objects.filter(is_staff=True) + + context = { + 'error': instance, + 'name': _('Server Error'), + 'message': _('An error has been logged by the server.'), + 'link': InvenTree.helpers.construct_absolute_url( + reverse('admin:error_report_error_change', kwargs={'object_id': instance.pk}) + ) + } + + common.notifications.trigger_notification( + instance, + 'inventree.error_log', + context=context, + targets=users, + ) + + except Exception as exc: + """We do not want to throw an exception while reporting an exception""" + logger.error(exc) diff --git a/InvenTree/common/notifications.py b/InvenTree/common/notifications.py index 122d7deaeb..4003276763 100644 --- a/InvenTree/common/notifications.py +++ b/InvenTree/common/notifications.py @@ -299,11 +299,12 @@ def trigger_notification(obj, category=None, obj_ref='pk', **kwargs): delivery_methods = (delivery_methods - IGNORED_NOTIFICATION_CLS) for method in delivery_methods: - logger.info(f"Triggering method '{method.METHOD_NAME}'") + logger.info(f"Triggering notification method '{method.METHOD_NAME}'") try: deliver_notification(method, obj, category, targets, context) except NotImplementedError as error: - raise error + # Allow any single notification method to fail, without failing the others + logger.error(error) except Exception as error: logger.error(error) diff --git a/InvenTree/common/test_notifications.py b/InvenTree/common/test_notifications.py index ab4b0838fd..08095a598b 100644 --- a/InvenTree/common/test_notifications.py +++ b/InvenTree/common/test_notifications.py @@ -93,7 +93,7 @@ class BulkNotificationMethodTests(BaseNotificationIntegrationTest): def get_targets(self): return [1, ] - with self.assertRaises(NotImplementedError): + with self.assertLogs(logger='inventree', level='ERROR'): self._notification_run(WrongImplementation) @@ -115,7 +115,7 @@ class SingleNotificationMethodTests(BaseNotificationIntegrationTest): def get_targets(self): return [1, ] - with self.assertRaises(NotImplementedError): + with self.assertLogs(logger='inventree', level='ERROR'): self._notification_run(WrongImplementation) # A integration test for notifications is provided in test_part.PartNotificationTest From e85d9aca52bc9a258c06b37d89baf3e42a8bed11 Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 6 Jun 2022 16:43:36 +1000 Subject: [PATCH 08/13] L10 crowdin (#3138) * updated translation base * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin * Fix: New translations django.po from Crowdin Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- InvenTree/locale/cs/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/de/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/el/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/en/LC_MESSAGES/django.po | 2300 +++++++++--------- InvenTree/locale/es/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/es_MX/LC_MESSAGES/django.po | 2300 +++++++++--------- InvenTree/locale/fa/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/fr/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/he/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/hu/LC_MESSAGES/django.po | 501 ++-- InvenTree/locale/id/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/it/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/ja/LC_MESSAGES/django.po | 455 ++-- InvenTree/locale/ko/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/nl/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/no/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/pl/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/pt/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/pt_br/LC_MESSAGES/django.po | 2300 +++++++++--------- InvenTree/locale/ru/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/sv/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/th/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/tr/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/vi/LC_MESSAGES/django.po | 439 ++-- InvenTree/locale/zh/LC_MESSAGES/django.po | 439 ++-- 25 files changed, 7962 insertions(+), 8674 deletions(-) diff --git a/InvenTree/locale/cs/LC_MESSAGES/django.po b/InvenTree/locale/cs/LC_MESSAGES/django.po index c945ea7424..8d3e247659 100644 --- a/InvenTree/locale/cs/LC_MESSAGES/django.po +++ b/InvenTree/locale/cs/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:43\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Czech\n" "Language: cs_CZ\n" @@ -124,7 +124,7 @@ msgstr "Chybějící soubor" msgid "Missing external link" msgstr "Chybějící externí odkaz" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "Neplatný výběr" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "Popis (volitelně)" msgid "parent" msgstr "nadřazený" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "Musí být platné číslo" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2551,12 +2552,12 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "" @@ -2713,7 +2714,7 @@ msgstr "" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "" msgid "On Order" msgstr "" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -4160,7 +4153,7 @@ msgstr "" msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "" @@ -4193,7 +4186,7 @@ msgstr "" msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" @@ -4397,153 +4390,153 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5414,83 +5407,59 @@ msgstr "" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po index 6a43d11604..0b34bff57e 100644 --- a/InvenTree/locale/de/LC_MESSAGES/django.po +++ b/InvenTree/locale/de/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:43\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -124,7 +124,7 @@ msgstr "Fehlende Datei" msgid "Missing external link" msgstr "Fehlender externer Link" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "Ungültige Auswahl" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "Beschreibung (optional)" msgid "parent" msgstr "Eltern" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "Muss eine gültige Nummer sein" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "Bauauftragsreferenz" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "Externer Link" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "Bauauftrag starten um Teile zuzuweisen" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "Quell-Lagerartikel" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "Menge der Endprodukte angeben" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "Anzahl muss größer Null sein" @@ -1015,7 +1015,7 @@ msgstr "Seriennummern automatisch zuweisen" msgid "Automatically allocate required items with matching serial numbers" msgstr "Benötigte Lagerartikel automatisch mit passenden Seriennummern zuweisen" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "Folgende Seriennummern existieren bereits" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "Eine Liste von Endprodukten muss angegeben werden" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "Bauauftrag hat unvollständige Aufbauten" msgid "No build outputs have been created for this build order" msgstr "Es wurden keine Endprodukte für diesen Bauauftrag erstellt" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "Stücklisten-Position" @@ -1124,7 +1125,7 @@ msgstr "Endprodukt muss auf den gleichen Bauauftrag verweisen" msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part muss auf dasselbe Teil verweisen wie der Bauauftrag" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "Teil muss auf Lager sein" @@ -1477,7 +1478,7 @@ msgstr "Fertiggestellte Endprodukte" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Anhänge" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "Wurde die Arbeit an dieser Nachricht abgeschlossen?" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "Datei hochgeladen" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "Übereinstimmende Felder" @@ -2551,12 +2552,12 @@ msgstr "Teile importiert" msgid "Previous Step" msgstr "Vorheriger Schritt" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "Bild-URL" @@ -2713,7 +2714,7 @@ msgstr "Parametername" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "Parameterwert" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "Einheiten" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "Zuliefererbeschreibung des Teils" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "Bild von URL herunterladen" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "Firmen" msgid "New Company" msgstr "Neue Firma" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "Bild herunterladen" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "Bildgröße überschreitet maximal-erlaubte Größe für Downloads" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "Ungültige Antwort {code}" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "Angegebene URL ist kein gültiges Bild" @@ -4020,47 +4021,47 @@ msgstr "Stückpreis für {part} auf {price} aktualisiert" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "{part} Stückpreis auf {price} und Menge auf {qty} aktualisiert" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "Eingehende Bestellung" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "Ausgehender Auftrag" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "Lagerartikel produziert von Bauauftrag" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "Lagerartikel für Bauauftrag benötigt" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "Gültig" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "Gesamte Stückliste validieren" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "Diese Option muss ausgewählt werden" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "Muss größer als 0 sein" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "Muss eine gültige Nummer sein" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "Standort für anfänglichen Bestand angeben" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "Dieses Feld ist erforderlich" @@ -4085,19 +4086,11 @@ msgstr "Verfügbarer Bestand" msgid "On Order" msgstr "Bestellt" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "Teil-Kategorie wählen" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "Parameter-Vorlage zu Kategorien dieser Ebene hinzufügen" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "Parameter-Vorlage zu allen Kategorien hinzufügen" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "Menge für die Preisberechnung" @@ -4113,7 +4106,7 @@ msgstr "Standard Stichwörter" msgid "Default keywords for parts in this category" msgstr "Standard-Stichworte für Teile dieser Kategorie" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Teil-Kategorie" @@ -4160,7 +4153,7 @@ msgstr "Die neuste Seriennummer ist" msgid "Duplicate IPN not allowed in part settings" msgstr "Doppelte IPN in den Teil-Einstellungen nicht erlaubt" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "Name des Teils" @@ -4193,7 +4186,7 @@ msgstr "Schlüsselwörter" msgid "Part keywords to improve visibility in search results" msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "Einheit des Parameters" msgid "Parent Part" msgstr "Ausgangsteil" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "Parameter Vorlage" @@ -4397,153 +4390,153 @@ msgstr "Wert" msgid "Parameter Value" msgstr "Parameter Wert" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "Standard-Wert" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "Standard Parameter Wert" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "Teilnummer oder Teilname" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "Teil-ID" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "Eindeutige Teil-ID" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "Name des Teils" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "Teil-ID" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "IPN-Wert des Teils" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "Stufe" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "Stücklistenebene" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "Ausgangsteil auswählen" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "Untergeordnetes Teil" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "Teil für die Nutzung in der Stückliste auswählen" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "Optional" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "Diese Stücklisten-Position ist optional" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Überschuss" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Geschätzter Ausschuss (absolut oder prozentual)" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "Referenz der Postion auf der Stückliste" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "Notizen zur Stücklisten-Position" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "Prüfsumme" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "Geerbt" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Diese Stücklisten-Position wird in die Stücklisten von Teil-Varianten vererbt" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "Varianten zulassen" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Bestand von Varianten kann für diese Stücklisten-Position verwendet werden" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "Menge muss eine Ganzzahl sein" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "Zuliefererteil muss festgelegt sein" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "Stücklisten Ersatzteile" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "Ersatzteil kann nicht identisch mit dem Hauptteil sein" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "Übergeordnete Stücklisten Position" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "Ersatzteil" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "Teil 1" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "Teil 2" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "verknüpftes Teil auswählen" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "Fehler bei Verwandschaft: Ist das Teil mit sich selbst verwandt oder ist das die Verwandtschaft nicht eindeutig?" @@ -4829,7 +4822,7 @@ msgstr "Teil Test-Vorlagen" msgid "Add Test Template" msgstr "Test Vorlage hinzufügen" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "Verkaufsauftragszuweisungen" @@ -4905,7 +4898,7 @@ msgstr "Baugruppen" msgid "Part Builds" msgstr "Gefertigte Teile" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "Bauauftragszuweisungen" @@ -5416,83 +5409,59 @@ msgstr "Unbekannte Datenbank" msgid "{title} v{version}" msgstr "{title} v{version}" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "Teil-Kategorie auswählen" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "Kategorie für {n} Teile setzen" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "Referenzen zuteilen" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "Kein(e)" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "Teil-QR-Code" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "Teilbild auswählen" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "Teilbild aktualisiert" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "Teilbild nicht gefunden" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "Löschen des Teils bestätigen" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "Teil wurde gelöscht" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "Teilbepreisung" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "Teilparametervorlage anlegen" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "Teilparametervorlage bearbeiten" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "Teilparametervorlage löschen" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "Teil-Kategorie löschen" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "Teil-Kategorie wurde gelöscht" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "Kategorieparametervorlage anlegen" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "Kategorieparametervorlage bearbeiten" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "Kategorieparametervorlage löschen" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "Ihre Umgebung verwendet eine veraltete Git-Version. Dies hindert InvenTree daran, Plugin-Details zu laden." @@ -5799,12 +5768,12 @@ msgid "Test Results" msgstr "Testergebnisse" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "Test" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "Ergebnis" @@ -5834,15 +5803,15 @@ msgstr "Verbaute Objekte" msgid "Serial" msgstr "Seriennummer" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "Menge ist erforderlich" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "Gültiges Teil muss angegeben werden" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "Seriennummern können für nicht verfolgbare Teile nicht angegeben werden" @@ -5966,7 +5935,7 @@ msgstr "Löschen wenn leer" msgid "Delete this Stock Item when stock is depleted" msgstr "Diesen Lagerartikel löschen wenn der Bestand aufgebraucht ist" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "Lagerartikel-Notizen" @@ -5978,105 +5947,105 @@ msgstr "Preis für eine Einheit bei Einkauf" msgid "Converted to part" msgstr "In Teil umgewandelt" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "Teil ist nicht verfolgbar" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "Anzahl muss eine Ganzzahl sein" -#: stock/models.py:1241 +#: stock/models.py:1242 #, 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:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "Seriennummern muss eine Liste von Ganzzahlen sein" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "Anzahl stimmt nicht mit den Seriennummern überein" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "Seriennummern {exists} existieren bereits" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "Artikel wurde einem Kundenauftrag zugewiesen" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "Lagerartikel ist in anderem Element verbaut" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "Lagerartikel enthält andere Artikel" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "Artikel wurde einem Kunden zugewiesen" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "Lagerartikel wird aktuell produziert" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "Nachverfolgbare Lagerartikel können nicht zusammengeführt werden" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "Artikel duplizeren" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "Lagerartikel müssen auf dasselbe Teil verweisen" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "Lagerartikel müssen auf dasselbe Lieferantenteil verweisen" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "Status-Codes müssen zusammenpassen" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "Lagerartikel kann nicht bewegt werden, da kein Bestand vorhanden ist" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "Eintrags-Notizen" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "Wert muss für diesen Test angegeben werden" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "Anhang muss für diesen Test hochgeladen werden" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "Name des Tests" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "Testergebnis" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "Test Ausgabe Wert" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "Test Ergebnis Anhang" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "Test Notizen" @@ -6097,7 +6066,7 @@ msgstr "Anzahl darf nicht die verfügbare Menge überschreiten ({q})" msgid "Enter serial numbers for new items" msgstr "Seriennummern für neue Teile eingeben" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "Ziel-Bestand" @@ -6129,67 +6098,71 @@ msgstr "Ausgewähltes Teil ist nicht in der Stückliste" msgid "Destination location for uninstalled item" msgstr "Ziel Lagerort für unverbautes Objekt" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr " Transaktionsnotizen hinzufügen (optional)" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "Teil muss verkaufbar sein" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "Artikel ist einem Kundenauftrag zugeordnet" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "Artikel ist einem Fertigungsauftrag zugeordnet" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "Kunde zum Zuweisen von Lagerartikel" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "Ausgewählte Firma ist kein Kunde" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "Notizen zur Lagerzuordnung" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "Eine Liste der Lagerbestände muss angegeben werden" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "Notizen zur Lagerartikelzusammenführung" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "Unterschiedliche Lieferanten erlauben" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Lieferanten erlauben" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "Unterschiedliche Status erlauben" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Status-Codes erlauben" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "Mindestens zwei Lagerartikel müssen angegeben werden" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "Primärschlüssel Lagerelement" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "Bestandsbewegungsnotizen" @@ -6197,44 +6170,40 @@ msgstr "Bestandsbewegungsnotizen" msgid "Stock Tracking Information" msgstr "Informationen zur Bestand-Verfolgung" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "neuer Eintrag" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "Kind-Lagerartikel" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "Dieser Lagerartikel hat keine Kinder" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "Testdaten" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "Test-Bericht" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "Testdaten löschen" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "Testdaten hinzufügen" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "Installierte Lagerartikel" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "Lagerartikel installieren" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "Testergebnis hinzufügen" @@ -6437,6 +6406,10 @@ msgstr "Keine Inventur ausgeführt" msgid "Edit Stock Status" msgstr "Bestandsstatus bearbeiten" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "zurück ins Lager" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "Sind Sie sicher, dass Sie diesen Lagerartikel löschen wollen?" @@ -6558,7 +6531,7 @@ msgstr "Zuweisungen" msgid "Child Items" msgstr "Untergeordnete Objekte" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "Lagerartikel umwandeln" @@ -6579,62 +6552,34 @@ msgstr "Warnung" msgid "This action cannot be easily undone" msgstr "Diese Aktion kann nicht einfach rückgängig gemacht werden" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "Sind Sie sicher, dass Sie diesen Lagerartikel-Verfolgungs-Eintrag löschen wollen?" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "QR-Code für diesen Lagerort" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "zurück ins Lager" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "gültigen Lagerort angeben" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "Lagerartikel retoure vom Kunden" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "alle Testdaten löschen" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "Löschen Testdaten bestätigen" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "Bestätigungsbox bestätigen" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "Lagerartikel-QR-Code" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "Bestand-Lagerort löschen" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "Lagerartikel löschen" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "Bestand-Tracking-Eintrag löschen" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "Bestand-Verfolgungs-Eintrag bearbeiten" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "Bestand-Verfolgungs-Eintrag hinzufügen" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "Zugriff verweigert" @@ -6766,7 +6711,7 @@ msgid "Notifications" msgstr "Benachrichtigungen" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "ID" @@ -7040,19 +6985,43 @@ msgid "No category parameter templates found" msgstr "Keine Kategorie-Parametervorlagen gefunden" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "Vorlage bearbeiten" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "Vorlage löschen" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "Kategorieparametervorlage anlegen" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "Kategorieparametervorlage löschen" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "Keine Teilparametervorlagen gefunden" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "Teilparametervorlage anlegen" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "Teilparametervorlage bearbeiten" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "Teilparametervorlage löschen" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/el/LC_MESSAGES/django.po b/InvenTree/locale/el/LC_MESSAGES/django.po index fcc2d63405..bfcbc62635 100644 --- a/InvenTree/locale/el/LC_MESSAGES/django.po +++ b/InvenTree/locale/el/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:43\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Greek\n" "Language: el_GR\n" @@ -124,7 +124,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "" msgid "parent" msgstr "" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2551,12 +2552,12 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "" @@ -2713,7 +2714,7 @@ msgstr "" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "" msgid "On Order" msgstr "" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -4160,7 +4153,7 @@ msgstr "" msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "" @@ -4193,7 +4186,7 @@ msgstr "" msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" @@ -4397,153 +4390,153 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5414,83 +5407,59 @@ msgstr "" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po index 65603d1a5c..b17d3d6faf 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: 2022-05-31 04:27+0000\n" +"POT-Creation-Date: 2022-06-03 10:21+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,44 +18,44 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: InvenTree/api.py:49 +#: InvenTree/api.py:46 msgid "API endpoint not found" msgstr "" -#: InvenTree/exceptions.py:50 +#: InvenTree/exceptions.py:46 msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:96 +#: InvenTree/fields.py:94 msgid "Enter date" msgstr "" -#: InvenTree/forms.py:124 templates/account/email_confirm.html:20 +#: InvenTree/forms.py:117 templates/account/email_confirm.html:20 #: templates/js/translated/forms.js:630 msgid "Confirm" msgstr "" -#: InvenTree/forms.py:140 +#: InvenTree/forms.py:134 msgid "Confirm delete" msgstr "" -#: InvenTree/forms.py:141 +#: InvenTree/forms.py:135 msgid "Confirm item deletion" msgstr "" -#: InvenTree/forms.py:172 +#: InvenTree/forms.py:167 msgid "Enter password" msgstr "" -#: InvenTree/forms.py:173 +#: InvenTree/forms.py:168 msgid "Enter new password" msgstr "" -#: InvenTree/forms.py:180 +#: InvenTree/forms.py:175 msgid "Confirm password" msgstr "" -#: InvenTree/forms.py:181 +#: InvenTree/forms.py:176 msgid "Confirm new password" msgstr "" @@ -71,72 +71,73 @@ msgstr "" msgid "Email address confirmation" msgstr "" -#: InvenTree/forms.py:258 +#: InvenTree/forms.py:259 msgid "You must type the same email each time." msgstr "" -#: InvenTree/helpers.py:449 +#: InvenTree/helpers.py:402 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:456 order/models.py:365 order/models.py:519 +#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:459 +#: InvenTree/helpers.py:412 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:491 +#: InvenTree/helpers.py:444 #, python-brace-format msgid "Invalid group range: {g}" msgstr "" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:447 #, python-brace-format msgid "Invalid group: {g}" msgstr "" -#: InvenTree/helpers.py:522 +#: InvenTree/helpers.py:475 #, python-brace-format msgid "Invalid group sequence: {g}" msgstr "" -#: InvenTree/helpers.py:530 +#: InvenTree/helpers.py:483 #, python-brace-format msgid "Invalid/no group {group}" msgstr "" -#: InvenTree/helpers.py:536 +#: InvenTree/helpers.py:489 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:540 +#: InvenTree/helpers.py:493 #, python-brace-format msgid "Number of unique serial numbers ({s}) must match quantity ({q})" msgstr "" -#: InvenTree/models.py:181 +#: InvenTree/models.py:174 msgid "Missing file" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:175 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:193 stock/models.py:2202 -#: templates/js/translated/attachment.js:119 +#: InvenTree/models.py:187 stock/models.py:2087 +#: templates/js/translated/attachment.js:101 +#: templates/js/translated/attachment.js:198 msgid "Attachment" msgstr "" -#: InvenTree/models.py:194 +#: InvenTree/models.py:188 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:200 company/models.py:123 company/models.py:337 -#: company/models.py:569 order/models.py:139 order/models.py:1273 -#: part/models.py:855 +#: InvenTree/models.py:194 company/models.py:123 company/models.py:272 +#: company/models.py:506 order/models.py:135 order/models.py:1235 +#: part/models.py:795 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:655 #: templates/js/translated/company.js:946 templates/js/translated/order.js:2676 @@ -144,64 +145,65 @@ msgstr "" msgid "Link" msgstr "" -#: InvenTree/models.py:201 build/models.py:330 part/models.py:856 -#: stock/models.py:665 +#: InvenTree/models.py:195 build/models.py:320 part/models.py:796 +#: stock/models.py:642 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:204 templates/js/translated/attachment.js:163 +#: InvenTree/models.py:198 templates/js/translated/attachment.js:102 +#: templates/js/translated/attachment.js:242 msgid "Comment" msgstr "" -#: InvenTree/models.py:204 +#: InvenTree/models.py:198 msgid "File comment" msgstr "" -#: InvenTree/models.py:210 InvenTree/models.py:211 common/models.py:1581 -#: common/models.py:1582 common/models.py:1816 common/models.py:1817 -#: common/models.py:2044 common/models.py:2045 part/models.py:2357 -#: part/models.py:2377 plugin/models.py:260 plugin/models.py:261 +#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499 +#: common/models.py:1500 common/models.py:1728 common/models.py:1729 +#: common/models.py:1991 common/models.py:1992 part/models.py:2153 +#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2513 msgid "User" msgstr "" -#: InvenTree/models.py:214 +#: InvenTree/models.py:208 msgid "upload date" msgstr "" -#: InvenTree/models.py:237 +#: InvenTree/models.py:230 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:260 +#: InvenTree/models.py:253 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:270 +#: InvenTree/models.py:263 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:273 +#: InvenTree/models.py:266 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:280 +#: InvenTree/models.py:273 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:287 +#: InvenTree/models.py:280 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:322 +#: InvenTree/models.py:314 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:338 InvenTree/models.py:339 common/models.py:1802 -#: company/models.py:420 label/models.py:104 part/models.py:799 -#: part/models.py:2541 plugin/models.py:99 report/models.py:169 +#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714 +#: company/models.py:354 label/models.py:101 part/models.py:739 +#: part/models.py:2331 plugin/models.py:93 report/models.py:151 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:49 @@ -215,15 +217,15 @@ msgstr "" msgid "Name" msgstr "" -#: InvenTree/models.py:345 build/models.py:207 -#: build/templates/build/detail.html:24 company/models.py:343 -#: company/models.py:575 company/templates/company/company_base.html:71 +#: InvenTree/models.py:340 build/models.py:197 +#: build/templates/build/detail.html:24 company/models.py:278 +#: company/models.py:512 company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:73 label/models.py:111 -#: order/models.py:137 part/models.py:822 part/templates/part/category.html:74 +#: company/templates/company/supplier_part.html:73 label/models.py:108 +#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:182 -#: report/models.py:547 report/models.py:586 +#: part/templates/part/set_category.html:14 report/models.py:164 +#: report/models.py:509 report/models.py:550 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:103 #: templates/InvenTree/settings/plugin_settings.html:33 @@ -239,232 +241,232 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:346 +#: InvenTree/models.py:341 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:354 +#: InvenTree/models.py:349 msgid "parent" msgstr "" -#: InvenTree/serializers.py:59 part/models.py:2874 +#: InvenTree/serializers.py:52 part/models.py:2650 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:293 +#: InvenTree/serializers.py:271 msgid "Filename" msgstr "" -#: InvenTree/serializers.py:328 +#: InvenTree/serializers.py:306 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:349 +#: InvenTree/serializers.py:328 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:350 +#: InvenTree/serializers.py:329 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:374 +#: InvenTree/serializers.py:350 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:380 +#: InvenTree/serializers.py:356 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:401 +#: InvenTree/serializers.py:377 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:404 +#: InvenTree/serializers.py:380 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:530 +#: InvenTree/serializers.py:503 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:533 +#: InvenTree/serializers.py:506 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:583 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:629 +#: InvenTree/serializers.py:592 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/settings.py:669 +#: InvenTree/settings.py:667 msgid "Czech" msgstr "" -#: InvenTree/settings.py:670 +#: InvenTree/settings.py:668 msgid "German" msgstr "" -#: InvenTree/settings.py:671 +#: InvenTree/settings.py:669 msgid "Greek" msgstr "" -#: InvenTree/settings.py:672 +#: InvenTree/settings.py:670 msgid "English" msgstr "" -#: InvenTree/settings.py:673 +#: InvenTree/settings.py:671 msgid "Spanish" msgstr "" -#: InvenTree/settings.py:674 +#: InvenTree/settings.py:672 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:675 +#: InvenTree/settings.py:673 msgid "Farsi / Persian" msgstr "" -#: InvenTree/settings.py:676 +#: InvenTree/settings.py:674 msgid "French" msgstr "" -#: InvenTree/settings.py:677 +#: InvenTree/settings.py:675 msgid "Hebrew" msgstr "" -#: InvenTree/settings.py:678 +#: InvenTree/settings.py:676 msgid "Hungarian" msgstr "" -#: InvenTree/settings.py:679 +#: InvenTree/settings.py:677 msgid "Italian" msgstr "" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:678 msgid "Japanese" msgstr "" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:679 msgid "Korean" msgstr "" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:680 msgid "Dutch" msgstr "" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:681 msgid "Norwegian" msgstr "" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:682 msgid "Polish" msgstr "" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:683 msgid "Portuguese" msgstr "" -#: InvenTree/settings.py:686 +#: InvenTree/settings.py:684 msgid "Portuguese (Brazilian)" msgstr "" -#: InvenTree/settings.py:687 +#: InvenTree/settings.py:685 msgid "Russian" msgstr "" -#: InvenTree/settings.py:688 +#: InvenTree/settings.py:686 msgid "Swedish" msgstr "" -#: InvenTree/settings.py:689 +#: InvenTree/settings.py:687 msgid "Thai" msgstr "" -#: InvenTree/settings.py:690 +#: InvenTree/settings.py:688 msgid "Turkish" msgstr "" -#: InvenTree/settings.py:691 +#: InvenTree/settings.py:689 msgid "Vietnamese" msgstr "" -#: InvenTree/settings.py:692 +#: InvenTree/settings.py:690 msgid "Chinese" msgstr "" -#: InvenTree/status.py:108 +#: InvenTree/status.py:99 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:112 +#: InvenTree/status.py:103 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:115 +#: InvenTree/status.py:106 msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 +#: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140 #: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "" -#: InvenTree/status_codes.py:102 +#: InvenTree/status_codes.py:100 msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:309 +#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:309 #: order/templates/order/order_base.html:134 #: order/templates/order/sales_order_base.html:133 msgid "Complete" msgstr "" -#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 +#: InvenTree/status_codes.py:102 InvenTree/status_codes.py:142 #: InvenTree/status_codes.py:308 msgid "Cancelled" msgstr "" -#: InvenTree/status_codes.py:105 InvenTree/status_codes.py:145 -#: InvenTree/status_codes.py:184 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:143 +#: InvenTree/status_codes.py:183 msgid "Lost" msgstr "" -#: InvenTree/status_codes.py:106 InvenTree/status_codes.py:146 -#: InvenTree/status_codes.py:187 +#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 +#: InvenTree/status_codes.py:186 msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:143 order/models.py:1141 -#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3581 +#: InvenTree/status_codes.py:141 order/models.py:1114 +#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607 msgid "Shipped" msgstr "" -#: InvenTree/status_codes.py:180 +#: InvenTree/status_codes.py:179 msgid "OK" msgstr "" -#: InvenTree/status_codes.py:181 +#: InvenTree/status_codes.py:180 msgid "Attention needed" msgstr "" -#: InvenTree/status_codes.py:182 +#: InvenTree/status_codes.py:181 msgid "Damaged" msgstr "" -#: InvenTree/status_codes.py:183 +#: InvenTree/status_codes.py:182 msgid "Destroyed" msgstr "" -#: InvenTree/status_codes.py:185 +#: InvenTree/status_codes.py:184 msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:186 +#: InvenTree/status_codes.py:185 msgid "Quarantined" msgstr "" @@ -560,123 +562,123 @@ msgstr "" msgid "Production" msgstr "" -#: InvenTree/validators.py:23 +#: InvenTree/validators.py:18 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:51 +#: InvenTree/validators.py:45 msgid "Invalid character in part name" msgstr "" -#: InvenTree/validators.py:64 +#: InvenTree/validators.py:57 #, python-brace-format msgid "IPN must match regex pattern {pat}" msgstr "" -#: InvenTree/validators.py:78 InvenTree/validators.py:92 -#: InvenTree/validators.py:106 +#: InvenTree/validators.py:68 InvenTree/validators.py:79 +#: InvenTree/validators.py:90 #, python-brace-format msgid "Reference must match pattern {pattern}" msgstr "" -#: InvenTree/validators.py:114 +#: InvenTree/validators.py:97 #, python-brace-format msgid "Illegal character in name ({x})" msgstr "" -#: InvenTree/validators.py:135 InvenTree/validators.py:151 +#: InvenTree/validators.py:116 InvenTree/validators.py:132 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:153 +#: InvenTree/validators.py:134 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:160 +#: InvenTree/validators.py:141 msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:534 +#: InvenTree/views.py:522 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:583 +#: InvenTree/views.py:571 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:22 +#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:609 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "" -#: InvenTree/views.py:628 +#: InvenTree/views.py:618 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:875 templates/navbar.html:152 +#: InvenTree/views.py:842 templates/navbar.html:152 msgid "System Information" msgstr "" -#: build/models.py:133 +#: build/models.py:126 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:137 build/templates/build/build_base.html:9 +#: build/models.py:131 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 #: templates/js/translated/build.js:727 msgid "Build Order" msgstr "" -#: build/models.py:138 build/templates/build/build_base.html:13 +#: build/models.py:132 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 -#: templates/InvenTree/settings/sidebar.html:45 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:45 users/models.py:40 msgid "Build Orders" msgstr "" -#: build/models.py:198 +#: build/models.py:188 msgid "Build Order Reference" msgstr "" -#: build/models.py:199 order/models.py:295 order/models.py:647 -#: order/models.py:942 part/models.py:2785 +#: build/models.py:189 order/models.py:288 order/models.py:638 +#: order/models.py:916 part/models.py:2568 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858 #: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919 #: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448 -#: templates/js/translated/order.js:3933 +#: templates/js/translated/order.js:3959 msgid "Reference" msgstr "" -#: build/models.py:210 +#: build/models.py:200 msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:169 +#: build/models.py:209 build/templates/build/build_base.html:169 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:220 +#: build/models.py:210 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:77 -#: build/templates/build/detail.html:29 company/models.py:711 -#: order/models.py:1041 order/models.py:1130 part/models.py:354 -#: part/models.py:2303 part/models.py:2319 part/models.py:2338 -#: part/models.py:2355 part/models.py:2457 part/models.py:2579 -#: part/models.py:2669 part/models.py:2760 part/models.py:3047 -#: part/serializers.py:917 part/templates/part/part_app_base.html:8 +#: build/models.py:215 build/templates/build/build_base.html:77 +#: build/templates/build/detail.html:29 company/models.py:647 +#: order/models.py:1012 order/models.py:1103 part/models.py:336 +#: part/models.py:2099 part/models.py:2114 part/models.py:2133 +#: part/models.py:2151 part/models.py:2250 part/models.py:2370 +#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 @@ -705,193 +707,193 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:233 +#: build/models.py:223 msgid "Select part to build" msgstr "" -#: build/models.py:238 +#: build/models.py:228 msgid "Sales Order Reference" msgstr "" -#: build/models.py:242 +#: build/models.py:232 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 build/serializers.py:790 +#: build/models.py:237 build/serializers.py:758 #: templates/js/translated/build.js:2071 templates/js/translated/order.js:2807 msgid "Source Location" msgstr "" -#: build/models.py:251 +#: build/models.py:241 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:256 +#: build/models.py:246 msgid "Destination Location" msgstr "" -#: build/models.py:260 +#: build/models.py:250 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:264 +#: build/models.py:254 msgid "Build Quantity" msgstr "" -#: build/models.py:267 +#: build/models.py:257 msgid "Number of stock items to build" msgstr "" -#: build/models.py:271 +#: build/models.py:261 msgid "Completed items" msgstr "" -#: build/models.py:273 +#: build/models.py:263 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 +#: build/models.py:267 msgid "Build Status" msgstr "" -#: build/models.py:281 +#: build/models.py:271 msgid "Build status code" msgstr "" -#: build/models.py:285 build/serializers.py:220 order/serializers.py:440 -#: stock/models.py:669 templates/js/translated/order.js:1175 +#: build/models.py:275 build/serializers.py:215 order/serializers.py:440 +#: stock/models.py:646 templates/js/translated/order.js:1175 msgid "Batch Code" msgstr "" -#: build/models.py:289 build/serializers.py:221 +#: build/models.py:279 build/serializers.py:216 msgid "Batch code for this build output" msgstr "" -#: build/models.py:292 order/models.py:141 part/models.py:994 +#: build/models.py:282 order/models.py:137 part/models.py:932 #: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489 msgid "Creation Date" msgstr "" -#: build/models.py:296 order/models.py:669 +#: build/models.py:286 order/models.py:660 msgid "Target completion date" msgstr "" -#: build/models.py:297 +#: build/models.py:287 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:300 order/models.py:338 +#: build/models.py:290 order/models.py:331 #: templates/js/translated/build.js:2558 msgid "Completion Date" msgstr "" -#: build/models.py:306 +#: build/models.py:296 msgid "completed by" msgstr "" -#: build/models.py:314 templates/js/translated/build.js:2526 +#: build/models.py:304 templates/js/translated/build.js:2526 msgid "Issued by" msgstr "" -#: build/models.py:315 +#: build/models.py:305 msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:155 +#: build/models.py:313 build/templates/build/build_base.html:190 +#: build/templates/build/detail.html:115 order/models.py:151 #: order/templates/order/order_base.html:176 -#: order/templates/order/sales_order_base.html:183 part/models.py:998 +#: order/templates/order/sales_order_base.html:183 part/models.py:936 #: report/templates/report/inventree_build_order_base.html:159 #: templates/js/translated/build.js:2538 templates/js/translated/order.js:1690 msgid "Responsible" msgstr "" -#: build/models.py:324 +#: build/models.py:314 msgid "User responsible for this build order" msgstr "" -#: build/models.py:329 build/templates/build/detail.html:101 +#: build/models.py:319 build/templates/build/detail.html:101 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:132 -#: part/templates/part/part_base.html:346 stock/models.py:663 +#: part/templates/part/part_base.html:346 stock/models.py:640 #: stock/templates/stock/item_base.html:205 msgid "External Link" msgstr "" -#: build/models.py:334 build/serializers.py:390 +#: build/models.py:324 build/serializers.py:374 #: build/templates/build/sidebar.html:21 company/models.py:134 -#: company/models.py:582 company/templates/company/sidebar.html:25 -#: order/models.py:159 order/models.py:944 order/models.py:1251 +#: company/models.py:519 company/templates/company/sidebar.html:25 +#: order/models.py:155 order/models.py:918 order/models.py:1213 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:983 +#: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:736 stock/models.py:2102 stock/models.py:2208 -#: stock/serializers.py:321 stock/serializers.py:459 stock/serializers.py:728 -#: stock/serializers.py:826 stock/serializers.py:958 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 #: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687 -#: templates/js/translated/order.js:3606 templates/js/translated/order.js:4004 +#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030 #: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916 msgid "Notes" msgstr "" -#: build/models.py:335 +#: build/models.py:325 msgid "Extra build notes" msgstr "" -#: build/models.py:773 +#: build/models.py:711 msgid "No build output specified" msgstr "" -#: build/models.py:776 +#: build/models.py:714 msgid "Build output is already completed" msgstr "" -#: build/models.py:779 +#: build/models.py:717 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1213 +#: build/models.py:1108 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1222 +#: build/models.py:1117 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1232 +#: build/models.py:1127 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1238 order/models.py:1413 +#: build/models.py:1133 order/models.py:1372 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1244 +#: build/models.py:1139 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1301 +#: build/models.py:1196 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1375 stock/templates/stock/item_base.html:177 +#: build/models.py:1265 stock/templates/stock/item_base.html:177 #: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454 #: templates/navbar.html:38 msgid "Build" msgstr "" -#: build/models.py:1376 +#: build/models.py:1266 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1392 build/serializers.py:631 order/serializers.py:964 -#: order/serializers.py:982 stock/serializers.py:393 stock/serializers.py:666 -#: stock/serializers.py:784 stock/templates/stock/item_base.html:10 +#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -904,17 +906,17 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1393 +#: build/models.py:1283 msgid "Source stock item" msgstr "" -#: build/models.py:1405 build/serializers.py:190 +#: build/models.py:1295 build/serializers.py:183 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1624 -#: company/forms.py:38 company/templates/company/supplier_part.html:258 -#: order/models.py:935 order/models.py:1453 order/serializers.py:1103 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:121 -#: part/forms.py:137 part/forms.py:153 part/models.py:2776 +#: build/templates/build/detail.html:34 common/models.py:1536 +#: company/forms.py:36 company/templates/company/supplier_part.html:258 +#: order/models.py:909 order/models.py:1412 order/serializers.py:1134 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:91 +#: part/forms.py:106 part/forms.py:121 part/models.py:2559 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -923,7 +925,7 @@ msgstr "" #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/serializers.py:282 stock/templates/stock/item_base.html:292 +#: stock/serializers.py:279 stock/templates/stock/item_base.html:292 #: stock/templates/stock/item_base.html:300 #: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689 #: templates/js/translated/bom.js:866 templates/js/translated/build.js:422 @@ -935,7 +937,7 @@ msgstr "" #: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126 #: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143 #: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320 -#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3939 +#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965 #: templates/js/translated/part.js:967 templates/js/translated/part.js:1969 #: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234 #: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403 @@ -944,87 +946,88 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1406 +#: build/models.py:1296 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1414 +#: build/models.py:1304 msgid "Install into" msgstr "" -#: build/models.py:1415 +#: build/models.py:1305 msgid "Destination stock item" msgstr "" -#: build/serializers.py:135 build/serializers.py:660 +#: build/serializers.py:128 build/serializers.py:632 #: templates/js/translated/build.js:1163 msgid "Build Output" msgstr "" -#: build/serializers.py:147 +#: build/serializers.py:140 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:151 +#: build/serializers.py:144 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:155 +#: build/serializers.py:148 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:166 +#: build/serializers.py:159 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:191 +#: build/serializers.py:184 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:203 build/serializers.py:651 order/models.py:363 -#: order/serializers.py:289 order/serializers.py:435 part/serializers.py:588 -#: part/serializers.py:1084 stock/models.py:496 stock/models.py:1307 -#: stock/serializers.py:294 +#: build/serializers.py:198 build/serializers.py:623 order/models.py:363 +#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 +#: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:210 +#: build/serializers.py:205 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:213 +#: build/serializers.py:208 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:227 order/serializers.py:448 order/serializers.py:1107 -#: stock/serializers.py:303 templates/js/translated/order.js:1186 +#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138 +#: stock/serializers.py:297 templates/js/translated/order.js:1186 #: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:228 +#: build/serializers.py:223 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:236 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:242 +#: build/serializers.py:237 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:276 stock/api.py:590 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:329 build/serializers.py:402 +#: build/serializers.py:317 build/serializers.py:386 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:372 order/serializers.py:421 order/serializers.py:526 -#: stock/serializers.py:314 stock/serializers.py:454 stock/serializers.py:819 -#: stock/serializers.py:1060 stock/templates/stock/item_base.html:390 +#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1036,12 +1039,12 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:373 +#: build/serializers.py:357 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:379 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:663 +#: build/serializers.py:363 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:654 #: order/serializers.py:458 stock/templates/stock/item_base.html:423 #: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510 #: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660 @@ -1050,133 +1053,133 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:385 +#: build/serializers.py:369 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:386 +#: build/serializers.py:370 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:456 +#: build/serializers.py:439 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:457 +#: build/serializers.py:440 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:463 +#: build/serializers.py:446 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:464 +#: build/serializers.py:447 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:470 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:490 +#: build/serializers.py:471 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:500 templates/js/translated/build.js:195 +#: build/serializers.py:481 templates/js/translated/build.js:195 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:505 +#: build/serializers.py:486 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:506 +#: build/serializers.py:487 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:516 templates/js/translated/build.js:199 +#: build/serializers.py:497 templates/js/translated/build.js:199 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:525 +#: build/serializers.py:506 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:528 build/templates/build/build_base.html:95 +#: build/serializers.py:509 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:556 build/serializers.py:605 part/models.py:2900 -#: part/models.py:3039 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 +#: part/models.py:2811 msgid "BOM Item" msgstr "" -#: build/serializers.py:566 +#: build/serializers.py:545 msgid "Build output" msgstr "" -#: build/serializers.py:575 +#: build/serializers.py:553 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:622 +#: build/serializers.py:594 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:637 stock/serializers.py:673 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:694 order/serializers.py:1015 +#: build/serializers.py:667 order/serializers.py:1052 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:700 +#: build/serializers.py:673 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:707 +#: build/serializers.py:680 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:712 +#: build/serializers.py:685 msgid "This stock item has already been allocated to this build output" msgstr "" -#: build/serializers.py:739 order/serializers.py:1277 +#: build/serializers.py:708 order/serializers.py:1298 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:791 +#: build/serializers.py:759 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:799 +#: build/serializers.py:767 msgid "Exclude Location" msgstr "" -#: build/serializers.py:800 +#: build/serializers.py:768 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:805 +#: build/serializers.py:773 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:806 +#: build/serializers.py:774 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:811 +#: build/serializers.py:779 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:812 +#: build/serializers.py:780 msgid "Allow allocation of substitute parts" msgstr "" -#: build/tasks.py:95 +#: build/tasks.py:96 msgid "Stock required for build order" msgstr "" @@ -1242,7 +1245,7 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:948 +#: build/templates/build/detail.html:131 order/models.py:922 #: order/templates/order/order_base.html:162 #: order/templates/order/sales_order_base.html:164 #: report/templates/report/inventree_build_order_base.html:126 @@ -1275,8 +1278,8 @@ msgid "Completed" msgstr "" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:1127 -#: order/models.py:1223 order/models.py:1357 +#: build/templates/build/detail.html:94 order/models.py:1100 +#: order/models.py:1185 order/models.py:1320 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 @@ -1317,7 +1320,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1063 +#: build/templates/build/detail.html:49 order/models.py:1034 #: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029 msgid "Destination" msgstr "" @@ -1476,7 +1479,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -1509,945 +1512,945 @@ msgstr "" msgid "Completed Outputs" msgstr "" -#: build/views.py:80 +#: build/views.py:59 msgid "Delete Build Order" msgstr "" -#: common/files.py:66 +#: common/files.py:62 msgid "Unsupported file format: {ext.upper()}" msgstr "" -#: common/files.py:68 +#: common/files.py:64 msgid "Error reading file (invalid encoding)" msgstr "" -#: common/files.py:73 +#: common/files.py:69 msgid "Error reading file (invalid format)" msgstr "" -#: common/files.py:75 +#: common/files.py:71 msgid "Error reading file (incorrect dimension)" msgstr "" -#: common/files.py:77 +#: common/files.py:73 msgid "Error reading file (data could be corrupted)" msgstr "" -#: common/forms.py:31 +#: common/forms.py:29 msgid "File" msgstr "" -#: common/forms.py:32 +#: common/forms.py:30 msgid "Select file to upload" msgstr "" -#: common/forms.py:47 +#: common/forms.py:44 msgid "{name.title()} File" msgstr "" -#: common/forms.py:48 +#: common/forms.py:45 #, python-brace-format msgid "Select {name} file to upload" msgstr "" -#: common/models.py:394 +#: common/models.py:365 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:396 +#: common/models.py:367 msgid "Settings value" msgstr "" -#: common/models.py:437 +#: common/models.py:408 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:457 +#: common/models.py:425 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:468 +#: common/models.py:436 msgid "Value must be an integer value" msgstr "" -#: common/models.py:517 +#: common/models.py:481 msgid "Key string must be unique" msgstr "" -#: common/models.py:739 +#: common/models.py:665 msgid "No group" msgstr "" -#: common/models.py:781 +#: common/models.py:704 msgid "Restart required" msgstr "" -#: common/models.py:782 +#: common/models.py:705 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:789 +#: common/models.py:712 msgid "Server Instance Name" msgstr "" -#: common/models.py:791 +#: common/models.py:714 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:795 +#: common/models.py:718 msgid "Use instance name" msgstr "" -#: common/models.py:796 +#: common/models.py:719 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:802 +#: common/models.py:725 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:803 +#: common/models.py:726 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:809 company/models.py:92 company/models.py:93 +#: common/models.py:732 company/models.py:92 company/models.py:93 msgid "Company name" msgstr "" -#: common/models.py:810 +#: common/models.py:733 msgid "Internal company name" msgstr "" -#: common/models.py:815 +#: common/models.py:738 msgid "Base URL" msgstr "" -#: common/models.py:816 +#: common/models.py:739 msgid "Base URL for server instance" msgstr "" -#: common/models.py:822 +#: common/models.py:745 msgid "Default Currency" msgstr "" -#: common/models.py:823 +#: common/models.py:746 msgid "Default currency" msgstr "" -#: common/models.py:829 +#: common/models.py:752 msgid "Download from URL" msgstr "" -#: common/models.py:830 +#: common/models.py:753 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:836 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:759 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:837 +#: common/models.py:760 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:843 +#: common/models.py:766 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:844 +#: common/models.py:767 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:850 +#: common/models.py:773 msgid "IPN Regex" msgstr "" -#: common/models.py:851 +#: common/models.py:774 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:855 +#: common/models.py:778 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:856 +#: common/models.py:779 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:862 +#: common/models.py:785 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:863 +#: common/models.py:786 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:869 +#: common/models.py:792 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:870 +#: common/models.py:793 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:876 +#: common/models.py:799 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:877 +#: common/models.py:800 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:883 +#: common/models.py:806 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:884 +#: common/models.py:807 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:890 +#: common/models.py:813 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:891 +#: common/models.py:814 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:897 part/models.py:2581 report/models.py:175 +#: common/models.py:820 part/models.py:2372 report/models.py:157 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "" -#: common/models.py:898 +#: common/models.py:821 msgid "Parts are templates by default" msgstr "" -#: common/models.py:904 part/models.py:946 templates/js/translated/bom.js:1390 +#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "" -#: common/models.py:905 +#: common/models.py:828 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:911 part/models.py:952 +#: common/models.py:834 part/models.py:890 #: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "" -#: common/models.py:912 +#: common/models.py:835 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:918 part/models.py:963 +#: common/models.py:841 part/models.py:901 msgid "Purchaseable" msgstr "" -#: common/models.py:919 +#: common/models.py:842 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:925 part/models.py:968 +#: common/models.py:848 part/models.py:906 #: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "" -#: common/models.py:926 +#: common/models.py:849 msgid "Parts are salable by default" msgstr "" -#: common/models.py:932 part/models.py:958 +#: common/models.py:855 part/models.py:896 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "" -#: common/models.py:933 +#: common/models.py:856 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:939 part/models.py:978 +#: common/models.py:862 part/models.py:916 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:940 +#: common/models.py:863 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:946 +#: common/models.py:869 msgid "Show Import in Views" msgstr "" -#: common/models.py:947 +#: common/models.py:870 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:953 +#: common/models.py:876 msgid "Show Price in Forms" msgstr "" -#: common/models.py:954 +#: common/models.py:877 msgid "Display part price in some forms" msgstr "" -#: common/models.py:965 +#: common/models.py:888 msgid "Show Price in BOM" msgstr "" -#: common/models.py:966 +#: common/models.py:889 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:977 +#: common/models.py:900 msgid "Show Price History" msgstr "" -#: common/models.py:978 +#: common/models.py:901 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:984 +#: common/models.py:907 msgid "Show related parts" msgstr "" -#: common/models.py:985 +#: common/models.py:908 msgid "Display related parts for a part" msgstr "" -#: common/models.py:991 +#: common/models.py:914 msgid "Create initial stock" msgstr "" -#: common/models.py:992 +#: common/models.py:915 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:998 +#: common/models.py:921 msgid "Internal Prices" msgstr "" -#: common/models.py:999 +#: common/models.py:922 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1005 +#: common/models.py:928 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:1006 +#: common/models.py:929 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:1012 +#: common/models.py:935 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1013 +#: common/models.py:936 msgid "Format to display the part name" msgstr "" -#: common/models.py:1020 +#: common/models.py:943 msgid "Enable Reports" msgstr "" -#: common/models.py:1021 +#: common/models.py:944 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1027 templates/stats.html:25 +#: common/models.py:950 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1028 +#: common/models.py:951 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1034 +#: common/models.py:957 msgid "Page Size" msgstr "" -#: common/models.py:1035 +#: common/models.py:958 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1045 +#: common/models.py:968 msgid "Test Reports" msgstr "" -#: common/models.py:1046 +#: common/models.py:969 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1052 +#: common/models.py:975 msgid "Batch Code Template" msgstr "" -#: common/models.py:1053 +#: common/models.py:976 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1058 +#: common/models.py:981 msgid "Stock Expiry" msgstr "" -#: common/models.py:1059 +#: common/models.py:982 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1065 +#: common/models.py:988 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1066 +#: common/models.py:989 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1072 +#: common/models.py:995 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1073 +#: common/models.py:996 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1075 +#: common/models.py:998 msgid "days" msgstr "" -#: common/models.py:1080 +#: common/models.py:1003 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1081 +#: common/models.py:1004 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1087 +#: common/models.py:1010 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1088 +#: common/models.py:1011 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1094 +#: common/models.py:1017 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:1095 +#: common/models.py:1018 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:1100 +#: common/models.py:1023 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:1101 +#: common/models.py:1024 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:1105 +#: common/models.py:1028 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:1106 +#: common/models.py:1029 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:1111 +#: common/models.py:1034 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1112 +#: common/models.py:1035 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1118 +#: common/models.py:1041 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:1119 +#: common/models.py:1042 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:1125 +#: common/models.py:1048 msgid "Enable password forgot" msgstr "" -#: common/models.py:1126 +#: common/models.py:1049 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1132 +#: common/models.py:1055 msgid "Enable registration" msgstr "" -#: common/models.py:1133 +#: common/models.py:1056 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1139 +#: common/models.py:1062 msgid "Enable SSO" msgstr "" -#: common/models.py:1140 +#: common/models.py:1063 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1146 +#: common/models.py:1069 msgid "Email required" msgstr "" -#: common/models.py:1147 +#: common/models.py:1070 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1153 +#: common/models.py:1076 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1154 +#: common/models.py:1077 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1160 +#: common/models.py:1083 msgid "Mail twice" msgstr "" -#: common/models.py:1161 +#: common/models.py:1084 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1167 +#: common/models.py:1090 msgid "Password twice" msgstr "" -#: common/models.py:1168 +#: common/models.py:1091 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1174 +#: common/models.py:1097 msgid "Group on signup" msgstr "" -#: common/models.py:1175 +#: common/models.py:1098 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1181 +#: common/models.py:1104 msgid "Enforce MFA" msgstr "" -#: common/models.py:1182 +#: common/models.py:1105 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1188 +#: common/models.py:1111 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1189 +#: common/models.py:1112 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1197 +#: common/models.py:1120 msgid "Enable URL integration" msgstr "" -#: common/models.py:1198 +#: common/models.py:1121 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1205 +#: common/models.py:1128 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1206 +#: common/models.py:1129 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1213 +#: common/models.py:1136 msgid "Enable app integration" msgstr "" -#: common/models.py:1214 +#: common/models.py:1137 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1221 +#: common/models.py:1144 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1222 +#: common/models.py:1145 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1229 +#: common/models.py:1152 msgid "Enable event integration" msgstr "" -#: common/models.py:1230 +#: common/models.py:1153 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1245 common/models.py:1574 +#: common/models.py:1170 common/models.py:1492 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1276 +#: common/models.py:1192 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1277 +#: common/models.py:1193 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1283 +#: common/models.py:1199 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1284 +#: common/models.py:1200 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1290 +#: common/models.py:1206 msgid "Show latest parts" msgstr "" -#: common/models.py:1291 +#: common/models.py:1207 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1297 +#: common/models.py:1213 msgid "Recent Part Count" msgstr "" -#: common/models.py:1298 +#: common/models.py:1214 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1304 +#: common/models.py:1220 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1305 +#: common/models.py:1221 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1311 +#: common/models.py:1227 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1312 +#: common/models.py:1228 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1318 +#: common/models.py:1234 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1319 +#: common/models.py:1235 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1325 +#: common/models.py:1241 msgid "Show low stock" msgstr "" -#: common/models.py:1326 +#: common/models.py:1242 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1332 +#: common/models.py:1248 msgid "Show depleted stock" msgstr "" -#: common/models.py:1333 +#: common/models.py:1249 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1339 +#: common/models.py:1255 msgid "Show needed stock" msgstr "" -#: common/models.py:1340 +#: common/models.py:1256 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1346 +#: common/models.py:1262 msgid "Show expired stock" msgstr "" -#: common/models.py:1347 +#: common/models.py:1263 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1353 +#: common/models.py:1269 msgid "Show stale stock" msgstr "" -#: common/models.py:1354 +#: common/models.py:1270 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1360 +#: common/models.py:1276 msgid "Show pending builds" msgstr "" -#: common/models.py:1361 +#: common/models.py:1277 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1367 +#: common/models.py:1283 msgid "Show overdue builds" msgstr "" -#: common/models.py:1368 +#: common/models.py:1284 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1374 +#: common/models.py:1290 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1375 +#: common/models.py:1291 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1381 +#: common/models.py:1297 msgid "Show overdue POs" msgstr "" -#: common/models.py:1382 +#: common/models.py:1298 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1388 +#: common/models.py:1304 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1389 +#: common/models.py:1305 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1395 +#: common/models.py:1311 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1396 +#: common/models.py:1312 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1401 +#: common/models.py:1317 msgid "Enable label printing" msgstr "" -#: common/models.py:1402 +#: common/models.py:1318 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1408 +#: common/models.py:1324 msgid "Inline label display" msgstr "" -#: common/models.py:1409 +#: common/models.py:1325 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1415 +#: common/models.py:1331 msgid "Inline report display" msgstr "" -#: common/models.py:1416 +#: common/models.py:1332 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1422 +#: common/models.py:1338 msgid "Search Parts" msgstr "" -#: common/models.py:1423 +#: common/models.py:1339 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1429 +#: common/models.py:1345 msgid "Seach Supplier Parts" msgstr "" -#: common/models.py:1430 +#: common/models.py:1346 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:1436 +#: common/models.py:1352 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:1437 +#: common/models.py:1353 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:1443 +#: common/models.py:1359 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1444 +#: common/models.py:1360 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:1450 +#: common/models.py:1366 msgid "Search Categories" msgstr "" -#: common/models.py:1451 +#: common/models.py:1367 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1457 +#: common/models.py:1373 msgid "Search Stock" msgstr "" -#: common/models.py:1458 +#: common/models.py:1374 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1464 +#: common/models.py:1380 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:1465 +#: common/models.py:1381 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:1471 +#: common/models.py:1387 msgid "Search Locations" msgstr "" -#: common/models.py:1472 +#: common/models.py:1388 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1478 +#: common/models.py:1394 msgid "Search Companies" msgstr "" -#: common/models.py:1479 +#: common/models.py:1395 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1485 +#: common/models.py:1401 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1486 +#: common/models.py:1402 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1492 +#: common/models.py:1408 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:1493 +#: common/models.py:1409 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:1499 +#: common/models.py:1415 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1500 +#: common/models.py:1416 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1506 +#: common/models.py:1422 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:1507 +#: common/models.py:1423 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:1513 +#: common/models.py:1429 msgid "Search Preview Results" msgstr "" -#: common/models.py:1514 +#: common/models.py:1430 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1520 +#: common/models.py:1436 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1521 +#: common/models.py:1437 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1527 +#: common/models.py:1443 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1528 +#: common/models.py:1444 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1534 +#: common/models.py:1450 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1535 +#: common/models.py:1451 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1541 +#: common/models.py:1457 msgid "Date Format" msgstr "" -#: common/models.py:1542 +#: common/models.py:1458 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1556 part/templates/part/detail.html:39 +#: common/models.py:1472 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1557 +#: common/models.py:1473 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1625 company/forms.py:39 +#: common/models.py:1537 company/forms.py:37 msgid "Price break quantity" msgstr "" -#: common/models.py:1632 company/serializers.py:285 -#: company/templates/company/supplier_part.html:263 order/models.py:975 +#: common/models.py:1544 company/serializers.py:288 +#: company/templates/company/supplier_part.html:263 order/models.py:949 #: templates/js/translated/part.js:998 templates/js/translated/part.js:1974 msgid "Price" msgstr "" -#: common/models.py:1633 +#: common/models.py:1545 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1793 common/models.py:1930 +#: common/models.py:1705 common/models.py:1883 msgid "Endpoint" msgstr "" -#: common/models.py:1794 +#: common/models.py:1706 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1803 +#: common/models.py:1715 msgid "Name for this webhook" msgstr "" -#: common/models.py:1808 part/models.py:973 plugin/models.py:105 +#: common/models.py:1720 part/models.py:911 plugin/models.py:99 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:308 @@ -2455,107 +2458,107 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:1809 +#: common/models.py:1721 msgid "Is this webhook active" msgstr "" -#: common/models.py:1823 +#: common/models.py:1735 msgid "Token" msgstr "" -#: common/models.py:1824 +#: common/models.py:1736 msgid "Token for access" msgstr "" -#: common/models.py:1831 +#: common/models.py:1743 msgid "Secret" msgstr "" -#: common/models.py:1832 +#: common/models.py:1744 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1897 +#: common/models.py:1850 msgid "Message ID" msgstr "" -#: common/models.py:1898 +#: common/models.py:1851 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1906 +#: common/models.py:1859 msgid "Host" msgstr "" -#: common/models.py:1907 +#: common/models.py:1860 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1914 +#: common/models.py:1867 msgid "Header" msgstr "" -#: common/models.py:1915 +#: common/models.py:1868 msgid "Header of this message" msgstr "" -#: common/models.py:1921 +#: common/models.py:1874 msgid "Body" msgstr "" -#: common/models.py:1922 +#: common/models.py:1875 msgid "Body of this message" msgstr "" -#: common/models.py:1931 +#: common/models.py:1884 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1936 +#: common/models.py:1889 msgid "Worked on" msgstr "" -#: common/models.py:1937 +#: common/models.py:1890 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:90 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:115 part/views.py:194 +#: common/views.py:87 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:102 part/views.py:193 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" -#: common/views.py:91 order/views.py:116 +#: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:194 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" -#: common/views.py:92 +#: common/views.py:89 msgid "Match Items" msgstr "" -#: common/views.py:437 +#: common/views.py:422 msgid "Fields matching failed" msgstr "" -#: common/views.py:492 +#: common/views.py:483 msgid "Parts imported" msgstr "" -#: common/views.py:514 order/templates/order/order_wizard/match_parts.html:19 +#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19 #: part/templates/part/import_wizard/match_references.html:19 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" msgstr "" -#: company/forms.py:20 part/forms.py:41 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:21 part/forms.py:42 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "" @@ -2614,7 +2617,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:131 part/models.py:865 +#: company/models.py:131 part/models.py:805 msgid "Image" msgstr "" @@ -2642,9 +2645,9 @@ msgstr "" msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:144 company/serializers.py:291 -#: company/templates/company/company_base.html:106 part/serializers.py:151 -#: part/serializers.py:183 stock/serializers.py:168 +#: company/models.py:144 company/serializers.py:294 +#: company/templates/company/company_base.html:106 part/serializers.py:137 +#: part/serializers.py:168 stock/serializers.py:162 msgid "Currency" msgstr "" @@ -2652,16 +2655,16 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:309 company/models.py:540 stock/models.py:607 +#: company/models.py:244 company/models.py:477 stock/models.py:584 #: stock/templates/stock/item_base.html:148 templates/js/translated/bom.js:542 msgid "Base Part" msgstr "" -#: company/models.py:313 company/models.py:544 +#: company/models.py:248 company/models.py:481 msgid "Select part" msgstr "" -#: company/models.py:324 company/templates/company/company_base.html:76 +#: company/models.py:259 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:103 #: stock/templates/stock/item_base.html:212 @@ -2673,11 +2676,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:325 templates/js/translated/part.js:236 +#: company/models.py:260 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" -#: company/models.py:331 company/templates/company/manufacturer_part.html:101 +#: company/models.py:266 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:111 #: templates/js/translated/company.js:255 #: templates/js/translated/company.js:487 @@ -2687,58 +2690,58 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:332 templates/js/translated/part.js:247 +#: company/models.py:267 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:338 +#: company/models.py:273 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:344 +#: company/models.py:279 msgid "Manufacturer part description" msgstr "" -#: company/models.py:391 company/models.py:414 company/models.py:563 +#: company/models.py:324 company/models.py:348 company/models.py:500 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:222 msgid "Manufacturer Part" msgstr "" -#: company/models.py:421 +#: company/models.py:355 msgid "Parameter name" msgstr "" -#: company/models.py:427 +#: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2195 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" msgstr "" -#: company/models.py:428 +#: company/models.py:362 msgid "Parameter value" msgstr "" -#: company/models.py:434 part/models.py:940 part/models.py:2549 +#: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:332 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" -#: company/models.py:435 +#: company/models.py:369 msgid "Parameter units" msgstr "" -#: company/models.py:507 +#: company/models.py:445 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:550 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:87 order/models.py:310 +#: company/models.py:487 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:87 order/models.py:303 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265 #: stock/templates/stock/item_base.html:229 #: templates/js/translated/company.js:254 @@ -2749,67 +2752,67 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:551 templates/js/translated/part.js:217 +#: company/models.py:488 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" -#: company/models.py:556 company/templates/company/supplier_part.html:97 +#: company/models.py:493 company/templates/company/supplier_part.html:97 #: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253 #: templates/js/translated/order.js:1894 templates/js/translated/part.js:227 #: templates/js/translated/part.js:942 msgid "SKU" msgstr "" -#: company/models.py:557 templates/js/translated/part.js:228 +#: company/models.py:494 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:564 +#: company/models.py:501 msgid "Select manufacturer part" msgstr "" -#: company/models.py:570 +#: company/models.py:507 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:576 +#: company/models.py:513 msgid "Supplier part description" msgstr "" -#: company/models.py:581 company/templates/company/supplier_part.html:125 -#: part/models.py:2788 part/templates/part/upload_bom.html:59 +#: company/models.py:518 company/templates/company/supplier_part.html:125 +#: part/models.py:2571 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 -#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:398 +#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" msgstr "" -#: company/models.py:585 part/models.py:1858 +#: company/models.py:522 part/models.py:1688 msgid "base cost" msgstr "" -#: company/models.py:585 part/models.py:1858 +#: company/models.py:522 part/models.py:1688 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:587 company/templates/company/supplier_part.html:118 -#: stock/models.py:631 stock/templates/stock/item_base.html:245 +#: company/models.py:524 company/templates/company/supplier_part.html:118 +#: stock/models.py:608 stock/templates/stock/item_base.html:245 #: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912 msgid "Packaging" msgstr "" -#: company/models.py:587 +#: company/models.py:524 msgid "Part packaging" msgstr "" -#: company/models.py:589 part/models.py:1860 +#: company/models.py:526 part/models.py:1690 msgid "multiple" msgstr "" -#: company/models.py:589 +#: company/models.py:526 msgid "Order multiple" msgstr "" -#: company/models.py:713 +#: company/models.py:649 msgid "last updated" msgstr "" @@ -2864,9 +2867,9 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:658 -#: order/templates/order/sales_order_base.html:116 stock/models.py:650 -#: stock/models.py:651 stock/serializers.py:714 +#: company/templates/company/company_base.html:86 order/models.py:649 +#: order/templates/order/sales_order_base.html:116 stock/models.py:627 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -2946,7 +2949,7 @@ msgstr "" #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:198 #: templates/InvenTree/settings/sidebar.html:47 #: templates/js/translated/search.js:275 templates/navbar.html:50 -#: users/models.py:43 +#: users/models.py:41 msgid "Purchase Orders" msgstr "" @@ -2969,7 +2972,7 @@ msgstr "" #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:218 #: templates/InvenTree/settings/sidebar.html:49 #: templates/js/translated/search.js:299 templates/navbar.html:61 -#: users/models.py:44 +#: users/models.py:42 msgid "Sales Orders" msgstr "" @@ -2996,7 +2999,7 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:47 +#: company/templates/company/manufacturer_part.html:15 company/views.py:45 #: part/templates/part/prices.html:170 templates/InvenTree/search.html:179 #: templates/navbar.html:49 msgid "Manufacturers" @@ -3029,7 +3032,7 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:41 +#: company/templates/company/supplier_part.html:15 company/views.py:39 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 #: templates/InvenTree/search.html:189 templates/navbar.html:48 msgid "Suppliers" @@ -3044,7 +3047,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:183 #: part/templates/part/detail.html:364 part/templates/part/detail.html:394 #: templates/js/translated/forms.js:439 templates/js/translated/helpers.js:32 -#: users/models.py:220 +#: users/models.py:219 msgid "Delete" msgstr "" @@ -3088,7 +3091,7 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:615 +#: company/templates/company/supplier_part.html:24 stock/models.py:592 #: stock/templates/stock/item_base.html:238 #: templates/js/translated/company.js:907 templates/js/translated/order.js:884 #: templates/js/translated/stock.js:1869 @@ -3207,179 +3210,179 @@ msgstr "" #: stock/templates/stock/location.html:173 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223 -#: templates/js/translated/stock.js:2307 users/models.py:41 +#: templates/js/translated/stock.js:2307 users/models.py:39 msgid "Stock Items" msgstr "" -#: company/views.py:42 +#: company/views.py:40 msgid "New Supplier" msgstr "" -#: company/views.py:48 +#: company/views.py:46 msgid "New Manufacturer" msgstr "" -#: company/views.py:53 templates/InvenTree/search.html:209 +#: company/views.py:51 templates/InvenTree/search.html:209 #: templates/navbar.html:60 msgid "Customers" msgstr "" -#: company/views.py:54 +#: company/views.py:52 msgid "New Customer" msgstr "" -#: company/views.py:61 templates/js/translated/search.js:252 +#: company/views.py:59 templates/js/translated/search.js:252 msgid "Companies" msgstr "" -#: company/views.py:62 +#: company/views.py:60 msgid "New Company" msgstr "" -#: company/views.py:121 part/views.py:579 +#: company/views.py:112 part/views.py:578 msgid "Download Image" msgstr "" -#: company/views.py:150 part/views.py:611 +#: company/views.py:139 part/views.py:608 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:157 part/views.py:618 +#: company/views.py:146 part/views.py:615 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:166 part/views.py:627 +#: company/views.py:155 part/views.py:624 msgid "Supplied URL is not a valid image file" msgstr "" -#: label/models.py:105 +#: label/models.py:102 msgid "Label name" msgstr "" -#: label/models.py:112 +#: label/models.py:109 msgid "Label description" msgstr "" -#: label/models.py:119 +#: label/models.py:116 msgid "Label" msgstr "" -#: label/models.py:120 +#: label/models.py:117 msgid "Label template file" msgstr "" -#: label/models.py:126 report/models.py:286 +#: label/models.py:123 report/models.py:253 msgid "Enabled" msgstr "" -#: label/models.py:127 +#: label/models.py:124 msgid "Label template is enabled" msgstr "" -#: label/models.py:132 +#: label/models.py:129 msgid "Width [mm]" msgstr "" -#: label/models.py:133 +#: label/models.py:130 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:139 +#: label/models.py:136 msgid "Height [mm]" msgstr "" -#: label/models.py:140 +#: label/models.py:137 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:146 report/models.py:279 +#: label/models.py:143 report/models.py:246 msgid "Filename Pattern" msgstr "" -#: label/models.py:147 +#: label/models.py:144 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:250 +#: label/models.py:233 msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" -#: label/models.py:251 label/models.py:295 label/models.py:327 -#: report/models.py:310 report/models.py:447 report/models.py:486 +#: label/models.py:234 label/models.py:274 label/models.py:302 +#: report/models.py:279 report/models.py:410 report/models.py:449 msgid "Filters" msgstr "" -#: label/models.py:294 +#: label/models.py:273 msgid "Query filters (comma-separated list of key=value pairs" msgstr "" -#: label/models.py:326 +#: label/models.py:301 msgid "Part query filters (comma-separated value of key=value pairs)" msgstr "" -#: order/models.py:137 +#: order/models.py:133 msgid "Order description" msgstr "" -#: order/models.py:139 order/models.py:1274 +#: order/models.py:135 order/models.py:1236 msgid "Link to external page" msgstr "" -#: order/models.py:147 +#: order/models.py:143 msgid "Created By" msgstr "" -#: order/models.py:154 +#: order/models.py:150 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:159 +#: order/models.py:155 msgid "Order notes" msgstr "" -#: order/models.py:296 order/models.py:648 +#: order/models.py:289 order/models.py:639 msgid "Order reference" msgstr "" -#: order/models.py:301 order/models.py:663 +#: order/models.py:294 order/models.py:654 msgid "Purchase order status" msgstr "" -#: order/models.py:311 +#: order/models.py:304 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:314 order/templates/order/order_base.html:124 +#: order/models.py:307 order/templates/order/order_base.html:124 #: templates/js/translated/order.js:1652 msgid "Supplier Reference" msgstr "" -#: order/models.py:314 +#: order/models.py:307 msgid "Supplier order reference code" msgstr "" -#: order/models.py:321 +#: order/models.py:314 msgid "received by" msgstr "" -#: order/models.py:326 +#: order/models.py:319 msgid "Issue Date" msgstr "" -#: order/models.py:327 +#: order/models.py:320 msgid "Date order was issued" msgstr "" -#: order/models.py:332 +#: order/models.py:325 msgid "Target Delivery Date" msgstr "" -#: order/models.py:333 +#: order/models.py:326 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:339 +#: order/models.py:332 msgid "Date order was completed" msgstr "" @@ -3387,94 +3390,94 @@ msgstr "" msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:514 +#: order/models.py:512 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:659 +#: order/models.py:650 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:665 +#: order/models.py:656 msgid "Customer Reference " msgstr "" -#: order/models.py:665 +#: order/models.py:656 msgid "Customer order reference code" msgstr "" -#: order/models.py:670 +#: order/models.py:661 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:673 order/models.py:1228 +#: order/models.py:664 order/models.py:1190 #: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656 msgid "Shipment Date" msgstr "" -#: order/models.py:680 +#: order/models.py:671 msgid "shipped by" msgstr "" -#: order/models.py:746 +#: order/models.py:726 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:750 +#: order/models.py:730 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:753 +#: order/models.py:733 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:756 +#: order/models.py:736 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:936 +#: order/models.py:910 msgid "Item quantity" msgstr "" -#: order/models.py:942 +#: order/models.py:916 msgid "Line item reference" msgstr "" -#: order/models.py:944 +#: order/models.py:918 msgid "Line item notes" msgstr "" -#: order/models.py:949 +#: order/models.py:923 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:967 +#: order/models.py:941 msgid "Context" msgstr "" -#: order/models.py:968 +#: order/models.py:942 msgid "Additional context for this line" msgstr "" -#: order/models.py:976 +#: order/models.py:950 msgid "Unit price" msgstr "" -#: order/models.py:1009 +#: order/models.py:980 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1016 +#: order/models.py:988 msgid "deleted" msgstr "" -#: order/models.py:1022 order/models.py:1104 order/models.py:1126 -#: order/models.py:1222 order/models.py:1357 +#: order/models.py:994 order/models.py:1074 order/models.py:1099 +#: order/models.py:1184 order/models.py:1320 #: templates/js/translated/order.js:3112 msgid "Order" msgstr "" -#: order/models.py:1023 order/models.py:1104 +#: order/models.py:995 order/models.py:1074 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:76 @@ -3485,182 +3488,182 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/models.py:1042 +#: order/models.py:1013 msgid "Supplier part" msgstr "" -#: order/models.py:1049 order/templates/order/order_base.html:169 +#: order/models.py:1020 order/templates/order/order_base.html:169 #: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009 #: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 #: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:1050 +#: order/models.py:1021 msgid "Number of items received" msgstr "" -#: order/models.py:1057 part/templates/part/prices.html:179 stock/models.py:745 -#: stock/serializers.py:159 stock/templates/stock/item_base.html:191 +#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722 +#: stock/serializers.py:153 stock/templates/stock/item_base.html:191 #: templates/js/translated/stock.js:1900 msgid "Purchase Price" msgstr "" -#: order/models.py:1058 +#: order/models.py:1029 msgid "Unit purchase price" msgstr "" -#: order/models.py:1066 +#: order/models.py:1037 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1136 part/templates/part/part_pricing.html:112 +#: order/models.py:1109 part/templates/part/part_pricing.html:112 #: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:1137 +#: order/models.py:1110 msgid "Unit sale price" msgstr "" -#: order/models.py:1142 +#: order/models.py:1115 msgid "Shipped quantity" msgstr "" -#: order/models.py:1229 +#: order/models.py:1191 msgid "Date of shipment" msgstr "" -#: order/models.py:1236 +#: order/models.py:1198 msgid "Checked By" msgstr "" -#: order/models.py:1237 +#: order/models.py:1199 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1245 +#: order/models.py:1207 msgid "Shipment number" msgstr "" -#: order/models.py:1252 +#: order/models.py:1214 msgid "Shipment notes" msgstr "" -#: order/models.py:1259 +#: order/models.py:1221 msgid "Tracking Number" msgstr "" -#: order/models.py:1260 +#: order/models.py:1222 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1267 +#: order/models.py:1229 msgid "Invoice Number" msgstr "" -#: order/models.py:1268 +#: order/models.py:1230 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1285 +#: order/models.py:1248 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1288 +#: order/models.py:1251 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1395 order/models.py:1397 +#: order/models.py:1354 order/models.py:1356 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1401 +#: order/models.py:1360 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1403 +#: order/models.py:1362 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1406 +#: order/models.py:1365 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1410 +#: order/models.py:1369 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1416 order/serializers.py:1008 +#: order/models.py:1375 order/serializers.py:1045 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1419 +#: order/models.py:1378 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1420 +#: order/models.py:1379 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1428 +#: order/models.py:1387 msgid "Line" msgstr "" -#: order/models.py:1436 order/serializers.py:1118 order/serializers.py:1246 +#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273 #: templates/js/translated/model_renderers.js:301 msgid "Shipment" msgstr "" -#: order/models.py:1437 +#: order/models.py:1396 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1449 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1450 +#: order/models.py:1409 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1453 +#: order/models.py:1412 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:69 +#: order/serializers.py:68 msgid "Price currency" msgstr "" -#: order/serializers.py:198 +#: order/serializers.py:192 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:296 +#: order/serializers.py:287 msgid "Order is not open" msgstr "" -#: order/serializers.py:320 +#: order/serializers.py:311 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:334 +#: order/serializers.py:330 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:339 +#: order/serializers.py:335 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:345 +#: order/serializers.py:341 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:346 +#: order/serializers.py:342 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:406 order/serializers.py:1083 +#: order/serializers.py:406 order/serializers.py:1117 msgid "Line Item" msgstr "" @@ -3668,7 +3671,7 @@ msgstr "" msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:422 order/serializers.py:527 +#: order/serializers.py:422 order/serializers.py:526 msgid "Select destination location for received items" msgstr "" @@ -3688,59 +3691,59 @@ msgstr "" msgid "Unique identifier field" msgstr "" -#: order/serializers.py:480 +#: order/serializers.py:477 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:500 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:539 +#: order/serializers.py:542 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:559 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:567 +#: order/serializers.py:570 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:842 +#: order/serializers.py:866 msgid "Sale price currency" msgstr "" -#: order/serializers.py:917 +#: order/serializers.py:947 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:973 order/serializers.py:1095 +#: order/serializers.py:1006 order/serializers.py:1126 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:995 +#: order/serializers.py:1028 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1108 +#: order/serializers.py:1139 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1132 order/serializers.py:1257 +#: order/serializers.py:1161 order/serializers.py:1281 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1135 order/serializers.py:1260 +#: order/serializers.py:1164 order/serializers.py:1284 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1187 +#: order/serializers.py:1214 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1197 +#: order/serializers.py:1224 msgid "The following serial numbers are already allocated" msgstr "" @@ -3988,7 +3991,8 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:70 -#: templates/js/translated/bom.js:1053 templates/js/translated/build.js:1880 +#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053 +#: templates/js/translated/build.js:1880 msgid "Actions" msgstr "" @@ -3996,201 +4000,202 @@ msgstr "" msgid "New Shipment" msgstr "" -#: order/views.py:117 +#: order/views.py:104 msgid "Match Supplier Parts" msgstr "" -#: order/views.py:390 +#: order/views.py:377 msgid "Sales order not found" msgstr "" -#: order/views.py:396 +#: order/views.py:383 msgid "Price not found" msgstr "" -#: order/views.py:399 +#: order/views.py:386 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:404 +#: order/views.py:391 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:504 +#: part/api.py:474 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:524 +#: part/api.py:494 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:542 +#: part/api.py:512 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:574 +#: part/api.py:544 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:665 +#: part/api.py:630 msgid "Valid" msgstr "" -#: part/api.py:666 +#: part/api.py:631 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:671 +#: part/api.py:637 msgid "This option must be selected" msgstr "" -#: part/api.py:1043 +#: part/api.py:1003 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1047 +#: part/api.py:1007 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1062 +#: part/api.py:1022 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1093 part/api.py:1097 part/api.py:1112 part/api.py:1116 +#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:99 part/models.py:874 +#: part/bom.py:127 part/models.py:98 part/models.py:814 #: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" -#: part/bom.py:126 templates/email/low_stock_notification.html:17 +#: part/bom.py:128 templates/email/low_stock_notification.html:17 msgid "Total Stock" msgstr "" -#: part/bom.py:127 part/templates/part/part_base.html:189 +#: part/bom.py:129 part/templates/part/part_base.html:189 +#: templates/js/translated/order.js:3543 msgid "Available Stock" msgstr "" -#: part/bom.py:128 part/templates/part/part_base.html:207 +#: part/bom.py:130 part/templates/part/part_base.html:207 #: templates/js/translated/part.js:517 templates/js/translated/part.js:537 #: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 #: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" -#: part/forms.py:79 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:98 +#: part/forms.py:67 msgid "Add parameter template to same level categories" msgstr "" -#: part/forms.py:102 +#: part/forms.py:71 msgid "Add parameter template to all categories" msgstr "" -#: part/forms.py:122 +#: part/forms.py:92 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:100 +#: part/models.py:99 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:103 +#: part/models.py:102 msgid "Default keywords" msgstr "" -#: part/models.py:103 +#: part/models.py:102 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:113 part/models.py:2625 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:114 part/templates/part/category.html:128 +#: part/models.py:116 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:198 -#: users/models.py:38 +#: users/models.py:36 msgid "Part Categories" msgstr "" -#: part/models.py:355 part/templates/part/cat_link.html:3 +#: part/models.py:337 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 #: templates/js/translated/part.js:1768 templates/js/translated/search.js:144 -#: templates/navbar.html:24 users/models.py:39 +#: templates/navbar.html:24 users/models.py:37 msgid "Parts" msgstr "" -#: part/models.py:447 +#: part/models.py:422 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:522 part/models.py:534 +#: part/models.py:492 part/models.py:504 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:664 +#: part/models.py:621 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:668 +#: part/models.py:625 msgid "Next available serial number is" msgstr "" -#: part/models.py:673 +#: part/models.py:630 msgid "Most recent serial number is" msgstr "" -#: part/models.py:769 +#: part/models.py:711 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:798 part/models.py:2678 +#: part/models.py:738 part/models.py:2467 msgid "Part name" msgstr "" -#: part/models.py:805 +#: part/models.py:745 msgid "Is Template" msgstr "" -#: part/models.py:806 +#: part/models.py:746 msgid "Is this part a template part?" msgstr "" -#: part/models.py:816 +#: part/models.py:756 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:817 +#: part/models.py:757 msgid "Variant Of" msgstr "" -#: part/models.py:823 +#: part/models.py:763 msgid "Part description" msgstr "" -#: part/models.py:828 part/templates/part/category.html:86 +#: part/models.py:768 part/templates/part/category.html:86 #: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:829 +#: part/models.py:769 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:836 part/models.py:2375 part/models.py:2624 +#: part/models.py:776 part/models.py:2171 part/models.py:2412 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4199,432 +4204,432 @@ msgstr "" msgid "Category" msgstr "" -#: part/models.py:837 +#: part/models.py:777 msgid "Part category" msgstr "" -#: part/models.py:842 part/templates/part/part_base.html:266 +#: part/models.py:782 part/templates/part/part_base.html:266 #: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 #: templates/js/translated/stock.js:1659 msgid "IPN" msgstr "" -#: part/models.py:843 +#: part/models.py:783 msgid "Internal Part Number" msgstr "" -#: part/models.py:849 +#: part/models.py:789 msgid "Part revision or version number" msgstr "" -#: part/models.py:850 part/templates/part/part_base.html:273 -#: report/models.py:188 templates/js/translated/part.js:670 +#: part/models.py:790 part/templates/part/part_base.html:273 +#: report/models.py:170 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:872 +#: part/models.py:812 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:919 part/templates/part/part_base.html:339 +#: part/models.py:857 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:920 +#: part/models.py:858 msgid "Default supplier part" msgstr "" -#: part/models.py:927 +#: part/models.py:865 msgid "Default Expiry" msgstr "" -#: part/models.py:928 +#: part/models.py:866 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:933 part/templates/part/part_base.html:200 +#: part/models.py:871 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:934 +#: part/models.py:872 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:941 +#: part/models.py:879 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:947 +#: part/models.py:885 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:953 +#: part/models.py:891 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:959 +#: part/models.py:897 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:964 +#: part/models.py:902 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:969 +#: part/models.py:907 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:974 +#: part/models.py:912 msgid "Is this part active?" msgstr "" -#: part/models.py:979 +#: part/models.py:917 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:984 +#: part/models.py:922 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:987 +#: part/models.py:925 msgid "BOM checksum" msgstr "" -#: part/models.py:987 +#: part/models.py:925 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:990 +#: part/models.py:928 msgid "BOM checked by" msgstr "" -#: part/models.py:992 +#: part/models.py:930 msgid "BOM checked date" msgstr "" -#: part/models.py:996 +#: part/models.py:934 msgid "Creation User" msgstr "" -#: part/models.py:1860 +#: part/models.py:1690 msgid "Sell multiple" msgstr "" -#: part/models.py:2425 +#: part/models.py:2218 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2442 +#: part/models.py:2235 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1819 +#: part/models.py:2255 templates/js/translated/part.js:1819 #: templates/js/translated/stock.js:1274 msgid "Test Name" msgstr "" -#: part/models.py:2463 +#: part/models.py:2256 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2468 +#: part/models.py:2261 msgid "Test Description" msgstr "" -#: part/models.py:2469 +#: part/models.py:2262 msgid "Enter description for this test" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1828 +#: part/models.py:2267 templates/js/translated/part.js:1828 #: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2475 +#: part/models.py:2268 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2480 templates/js/translated/part.js:1836 +#: part/models.py:2273 templates/js/translated/part.js:1836 msgid "Requires Value" msgstr "" -#: part/models.py:2481 +#: part/models.py:2274 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2486 templates/js/translated/part.js:1843 +#: part/models.py:2279 templates/js/translated/part.js:1843 msgid "Requires Attachment" msgstr "" -#: part/models.py:2487 +#: part/models.py:2280 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2498 +#: part/models.py:2288 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2534 +#: part/models.py:2324 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2542 +#: part/models.py:2332 msgid "Parameter Name" msgstr "" -#: part/models.py:2549 +#: part/models.py:2339 msgid "Parameter Units" msgstr "" -#: part/models.py:2579 +#: part/models.py:2370 msgid "Parent Part" msgstr "" -#: part/models.py:2581 part/models.py:2630 part/models.py:2631 +#: part/models.py:2372 part/models.py:2418 part/models.py:2419 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" -#: part/models.py:2583 +#: part/models.py:2374 msgid "Data" msgstr "" -#: part/models.py:2583 +#: part/models.py:2374 msgid "Parameter Value" msgstr "" -#: part/models.py:2635 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2636 +#: part/models.py:2424 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2670 +#: part/models.py:2459 msgid "Part ID or part name" msgstr "" -#: part/models.py:2673 templates/js/translated/model_renderers.js:200 +#: part/models.py:2462 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2674 +#: part/models.py:2463 msgid "Unique part ID value" msgstr "" -#: part/models.py:2677 +#: part/models.py:2466 msgid "Part Name" msgstr "" -#: part/models.py:2681 +#: part/models.py:2470 msgid "Part IPN" msgstr "" -#: part/models.py:2682 +#: part/models.py:2471 msgid "Part IPN value" msgstr "" -#: part/models.py:2685 +#: part/models.py:2474 msgid "Level" msgstr "" -#: part/models.py:2686 +#: part/models.py:2475 msgid "BOM level" msgstr "" -#: part/models.py:2761 +#: part/models.py:2544 msgid "Select parent part" msgstr "" -#: part/models.py:2769 +#: part/models.py:2552 msgid "Sub part" msgstr "" -#: part/models.py:2770 +#: part/models.py:2553 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2776 +#: part/models.py:2559 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2778 part/templates/part/upload_bom.html:58 +#: part/models.py:2561 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2778 +#: part/models.py:2561 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2781 part/templates/part/upload_bom.html:55 +#: part/models.py:2564 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2782 +#: part/models.py:2565 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2785 +#: part/models.py:2568 msgid "BOM item reference" msgstr "" -#: part/models.py:2788 +#: part/models.py:2571 msgid "BOM item notes" msgstr "" -#: part/models.py:2790 +#: part/models.py:2573 msgid "Checksum" msgstr "" -#: part/models.py:2790 +#: part/models.py:2573 msgid "BOM line checksum" msgstr "" -#: part/models.py:2794 part/templates/part/upload_bom.html:57 +#: part/models.py:2577 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2795 +#: part/models.py:2578 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2800 part/templates/part/upload_bom.html:56 +#: part/models.py:2583 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2801 +#: part/models.py:2584 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2886 stock/models.py:486 +#: part/models.py:2662 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2895 part/models.py:2897 +#: part/models.py:2671 part/models.py:2673 msgid "Sub part must be specified" msgstr "" -#: part/models.py:3006 +#: part/models.py:2778 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3028 +#: part/models.py:2799 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3040 +#: part/models.py:2812 msgid "Parent BOM item" msgstr "" -#: part/models.py:3048 +#: part/models.py:2820 msgid "Substitute part" msgstr "" -#: part/models.py:3059 +#: part/models.py:2831 msgid "Part 1" msgstr "" -#: part/models.py:3063 +#: part/models.py:2835 msgid "Part 2" msgstr "" -#: part/models.py:3063 +#: part/models.py:2835 msgid "Select Related Part" msgstr "" -#: part/models.py:3095 +#: part/models.py:2866 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:152 part/serializers.py:184 stock/serializers.py:169 +#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:918 +#: part/serializers.py:794 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:929 +#: part/serializers.py:802 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:930 +#: part/serializers.py:803 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:935 +#: part/serializers.py:808 msgid "Include Inherited" msgstr "" -#: part/serializers.py:936 +#: part/serializers.py:809 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:941 +#: part/serializers.py:814 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:942 +#: part/serializers.py:815 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:947 +#: part/serializers.py:820 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:948 +#: part/serializers.py:821 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:992 +#: part/serializers.py:861 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:993 +#: part/serializers.py:862 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1020 +#: part/serializers.py:892 msgid "No part column specified" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:935 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1066 +#: part/serializers.py:938 msgid "No matching part found" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:941 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:950 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1086 +#: part/serializers.py:958 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1105 +#: part/serializers.py:979 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:14 +#: part/tasks.py:21 msgid "Low stock notification" msgstr "" -#: part/tasks.py:15 +#: part/tasks.py:22 #, python-brace-format msgid "The available stock for {part.name} has fallen below the configured minimum level" msgstr "" @@ -4826,7 +4831,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4902,7 +4907,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5109,7 +5114,7 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:3543 +#: part/templates/part/part_base.html:194 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" @@ -5403,16 +5408,16 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:186 +#: part/templatetags/inventree_extras.py:158 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:223 +#: part/templatetags/inventree_extras.py:193 #, python-brace-format msgid "{title} v{version}" msgstr "" -#: part/views.py:74 +#: part/views.py:76 msgid "Set Part Category" msgstr "" @@ -5421,87 +5426,75 @@ msgstr "" msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:195 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:496 msgid "None" msgstr "" -#: part/views.py:556 +#: part/views.py:558 msgid "Part QR Code" msgstr "" -#: part/views.py:658 +#: part/views.py:652 msgid "Select Part Image" msgstr "" -#: part/views.py:684 +#: part/views.py:678 msgid "Updated part image" msgstr "" -#: part/views.py:687 +#: part/views.py:681 msgid "Part image not found" msgstr "" -#: part/views.py:775 +#: part/views.py:770 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:782 +#: part/views.py:778 msgid "Part was deleted" msgstr "" -#: part/views.py:791 +#: part/views.py:787 msgid "Part Pricing" msgstr "" -#: part/views.py:940 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:950 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:957 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:999 +#: part/views.py:978 msgid "Delete Part Category" msgstr "" -#: part/views.py:1005 +#: part/views.py:985 msgid "Part category was deleted" msgstr "" -#: part/views.py:1014 +#: part/views.py:994 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1115 +#: part/views.py:1094 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1171 +#: part/views.py:1155 msgid "Delete Category Parameter Template" msgstr "" -#: plugin/apps.py:48 +#: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" -#: plugin/base/action/api.py:28 +#: plugin/base/action/api.py:27 msgid "No action specified" msgstr "" -#: plugin/base/action/api.py:39 +#: plugin/base/action/api.py:38 msgid "No matching action found" msgstr "" -#: plugin/base/barcodes/api.py:52 plugin/base/barcodes/api.py:152 +#: plugin/base/barcodes/api.py:52 plugin/base/barcodes/api.py:154 msgid "Must provide barcode_data parameter" msgstr "" @@ -5513,31 +5506,31 @@ msgstr "" msgid "Match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:155 +#: plugin/base/barcodes/api.py:157 msgid "Must provide stockitem parameter" msgstr "" -#: plugin/base/barcodes/api.py:162 +#: plugin/base/barcodes/api.py:164 msgid "No matching stock item found" msgstr "" -#: plugin/base/barcodes/api.py:192 +#: plugin/base/barcodes/api.py:194 msgid "Barcode already matches Stock Item" msgstr "" -#: plugin/base/barcodes/api.py:196 +#: plugin/base/barcodes/api.py:198 msgid "Barcode already matches Stock Location" msgstr "" -#: plugin/base/barcodes/api.py:200 +#: plugin/base/barcodes/api.py:202 msgid "Barcode already matches Part" msgstr "" -#: plugin/base/barcodes/api.py:206 plugin/base/barcodes/api.py:218 +#: plugin/base/barcodes/api.py:208 plugin/base/barcodes/api.py:220 msgid "Barcode hash already matches Stock Item" msgstr "" -#: plugin/base/barcodes/api.py:224 +#: plugin/base/barcodes/api.py:226 msgid "Barcode associated with Stock Item" msgstr "" @@ -5545,226 +5538,226 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/builtin/integration/core_notifications.py:24 +#: plugin/builtin/integration/core_notifications.py:28 msgid "InvenTree contributors" msgstr "" -#: plugin/builtin/integration/core_notifications.py:25 +#: plugin/builtin/integration/core_notifications.py:29 msgid "Integrated outgoing notificaton methods" msgstr "" -#: plugin/builtin/integration/core_notifications.py:29 -#: plugin/builtin/integration/core_notifications.py:46 +#: plugin/builtin/integration/core_notifications.py:33 +#: plugin/builtin/integration/core_notifications.py:52 msgid "Enable email notifications" msgstr "" -#: plugin/builtin/integration/core_notifications.py:30 -#: plugin/builtin/integration/core_notifications.py:47 +#: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/core_notifications.py:53 msgid "Allow sending of emails for event notifications" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:32 msgid "Plugin Metadata" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:33 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: plugin/models.py:85 +#: plugin/models.py:79 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:86 +#: plugin/models.py:80 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:91 +#: plugin/models.py:85 msgid "Key" msgstr "" -#: plugin/models.py:92 +#: plugin/models.py:86 msgid "Key of plugin" msgstr "" -#: plugin/models.py:100 +#: plugin/models.py:94 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:106 +#: plugin/models.py:100 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:179 +#: plugin/models.py:168 msgid "Plugin" msgstr "" -#: plugin/models.py:253 +#: plugin/models.py:231 msgid "Method" msgstr "" -#: plugin/plugin.py:246 +#: plugin/plugin.py:214 msgid "No author found" msgstr "" -#: plugin/plugin.py:260 +#: plugin/plugin.py:226 msgid "No date found" msgstr "" -#: plugin/samples/integration/sample.py:42 +#: plugin/samples/integration/sample.py:39 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:43 +#: plugin/samples/integration/sample.py:40 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:48 +#: plugin/samples/integration/sample.py:45 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:46 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:52 +#: plugin/samples/integration/sample.py:49 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:53 +#: plugin/samples/integration/sample.py:50 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:58 +#: plugin/samples/integration/sample.py:55 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:59 +#: plugin/samples/integration/sample.py:56 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:74 +#: plugin/serializers.py:73 msgid "Source URL" msgstr "" -#: plugin/serializers.py:75 +#: plugin/serializers.py:74 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:80 +#: plugin/serializers.py:79 msgid "Package Name" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:80 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:84 +#: plugin/serializers.py:83 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:85 +#: plugin/serializers.py:84 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:104 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:102 +#: plugin/serializers.py:106 msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:191 +#: report/api.py:166 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:223 report/api.py:270 +#: report/api.py:198 report/api.py:239 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:170 +#: report/models.py:152 msgid "Template name" msgstr "" -#: report/models.py:176 +#: report/models.py:158 msgid "Report template file" msgstr "" -#: report/models.py:183 +#: report/models.py:165 msgid "Report template description" msgstr "" -#: report/models.py:189 +#: report/models.py:171 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:280 +#: report/models.py:247 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:287 +#: report/models.py:254 msgid "Report template is enabled" msgstr "" -#: report/models.py:311 +#: report/models.py:280 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:319 +#: report/models.py:288 msgid "Include Installed Tests" msgstr "" -#: report/models.py:320 +#: report/models.py:289 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:370 +#: report/models.py:336 msgid "Build Filters" msgstr "" -#: report/models.py:371 +#: report/models.py:337 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:413 +#: report/models.py:376 msgid "Part Filters" msgstr "" -#: report/models.py:414 +#: report/models.py:377 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:448 +#: report/models.py:411 msgid "Purchase order query filters" msgstr "" -#: report/models.py:487 +#: report/models.py:450 msgid "Sales order query filters" msgstr "" -#: report/models.py:542 +#: report/models.py:504 msgid "Snippet" msgstr "" -#: report/models.py:543 +#: report/models.py:505 msgid "Report snippet file" msgstr "" -#: report/models.py:547 +#: report/models.py:509 msgid "Snippet file description" msgstr "" -#: report/models.py:582 +#: report/models.py:546 msgid "Asset" msgstr "" -#: report/models.py:583 +#: report/models.py:547 msgid "Report asset file" msgstr "" -#: report/models.py:586 +#: report/models.py:550 msgid "Asset file description" msgstr "" @@ -5781,7 +5774,7 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:655 stock/templates/stock/item_base.html:322 +#: stock/models.py:632 stock/templates/stock/item_base.html:322 #: templates/js/translated/build.js:420 templates/js/translated/build.js:572 #: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671 #: templates/js/translated/model_renderers.js:106 @@ -5795,12 +5788,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2183 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2189 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5830,362 +5823,366 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:542 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:549 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:574 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:82 stock/models.py:750 +#: stock/models.py:83 stock/models.py:727 #: stock/templates/stock/item_base.html:252 msgid "Owner" msgstr "" -#: stock/models.py:83 stock/models.py:751 +#: stock/models.py:84 stock/models.py:728 msgid "Select Owner" msgstr "" -#: stock/models.py:459 +#: stock/models.py:435 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:503 +#: stock/models.py:477 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:513 stock/models.py:522 +#: stock/models.py:487 stock/models.py:496 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:514 +#: stock/models.py:488 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:536 +#: stock/models.py:510 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:542 +#: stock/models.py:516 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:556 +#: stock/models.py:530 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:599 +#: stock/models.py:576 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:608 +#: stock/models.py:585 msgid "Base part" msgstr "" -#: stock/models.py:616 +#: stock/models.py:593 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:622 stock/templates/stock/location.html:17 +#: stock/models.py:599 stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:625 +#: stock/models.py:602 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:632 +#: stock/models.py:609 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:638 stock/templates/stock/item_base.html:361 +#: stock/models.py:615 stock/templates/stock/item_base.html:361 msgid "Installed In" msgstr "" -#: stock/models.py:641 +#: stock/models.py:618 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:657 +#: stock/models.py:634 msgid "Serial number for this item" msgstr "" -#: stock/models.py:671 +#: stock/models.py:648 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:676 +#: stock/models.py:653 msgid "Stock Quantity" msgstr "" -#: stock/models.py:685 +#: stock/models.py:662 msgid "Source Build" msgstr "" -#: stock/models.py:687 +#: stock/models.py:664 msgid "Build for this stock item" msgstr "" -#: stock/models.py:698 +#: stock/models.py:675 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:701 +#: stock/models.py:678 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:707 +#: stock/models.py:684 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:713 stock/templates/stock/item_base.html:429 +#: stock/models.py:690 stock/templates/stock/item_base.html:429 #: templates/js/translated/stock.js:1816 msgid "Expiry Date" msgstr "" -#: stock/models.py:714 +#: stock/models.py:691 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:727 +#: stock/models.py:704 msgid "Delete on deplete" msgstr "" -#: stock/models.py:727 +#: stock/models.py:704 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:737 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:746 +#: stock/models.py:723 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:778 +#: stock/models.py:751 msgid "Converted to part" msgstr "" -#: stock/models.py:1298 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1304 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1310 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1313 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1316 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1394 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1397 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1400 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1403 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1406 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1409 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1416 stock/serializers.py:863 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1420 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1424 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1428 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1600 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2103 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2160 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2166 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2184 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2190 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2196 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2203 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2209 +#: stock/models.py:2094 msgid "Test notes" msgstr "" -#: stock/serializers.py:162 +#: stock/serializers.py:156 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:283 +#: stock/serializers.py:280 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:298 +#: stock/serializers.py:292 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:304 +#: stock/serializers.py:298 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:315 stock/serializers.py:820 stock/serializers.py:1061 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:322 +#: stock/serializers.py:316 msgid "Optional note field" msgstr "" -#: stock/serializers.py:335 +#: stock/serializers.py:326 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:352 +#: stock/serializers.py:343 msgid "Serial numbers already exist" msgstr "" -#: stock/serializers.py:394 +#: stock/serializers.py:383 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:410 +#: stock/serializers.py:396 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:417 +#: stock/serializers.py:403 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:440 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:460 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:677 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:681 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:685 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:715 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:721 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:729 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:739 stock/serializers.py:969 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:827 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:833 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:838 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:839 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:931 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:959 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6193,44 +6190,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6433,6 +6426,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6502,7 +6499,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:156 templates/InvenTree/search.html:165 -#: templates/js/translated/search.js:238 users/models.py:40 +#: templates/js/translated/search.js:238 users/models.py:38 msgid "Stock Locations" msgstr "" @@ -6554,7 +6551,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:227 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6575,62 +6572,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:125 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:144 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:153 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:164 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:175 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:192 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:193 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:208 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:264 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:277 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:288 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:295 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:304 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6901,7 +6870,7 @@ msgid "Install Plugin" msgstr "" #: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 -#: users/models.py:37 +#: users/models.py:35 msgid "Admin" msgstr "" @@ -7049,6 +7018,22 @@ msgstr "" msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:355 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:373 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:387 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:395 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -7589,6 +7574,14 @@ msgstr "" msgid "Add Attachment" msgstr "" +#: templates/attachment_table.html:11 +msgid "Delete selected attachments" +msgstr "" + +#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110 +msgid "Delete Attachments" +msgstr "" + #: templates/base.html:101 msgid "Server Restart Required" msgstr "" @@ -7725,31 +7718,27 @@ msgstr "" msgid "Error code" msgstr "" -#: templates/js/translated/attachment.js:78 +#: templates/js/translated/attachment.js:96 +msgid "All selected attachments will be deleted" +msgstr "" + +#: templates/js/translated/attachment.js:156 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:100 +#: templates/js/translated/attachment.js:180 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:110 -msgid "Confirm Delete" -msgstr "" - -#: templates/js/translated/attachment.js:111 -msgid "Delete Attachment" -msgstr "" - -#: templates/js/translated/attachment.js:167 +#: templates/js/translated/attachment.js:246 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:183 +#: templates/js/translated/attachment.js:262 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:190 +#: templates/js/translated/attachment.js:269 msgid "Delete attachment" msgstr "" @@ -7966,6 +7955,7 @@ msgid "Variant stock allowed" msgstr "" #: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814 +#: templates/js/translated/order.js:3562 msgid "No Stock Available" msgstr "" @@ -8194,20 +8184,20 @@ msgstr "" msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1808 +#: templates/js/translated/build.js:1808 templates/js/translated/order.js:3568 msgid "Insufficient stock available" msgstr "" -#: templates/js/translated/build.js:1810 +#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3566 msgid "Sufficient stock available" msgstr "" #: templates/js/translated/build.js:1839 templates/js/translated/build.js:2084 -#: templates/js/translated/build.js:2657 templates/js/translated/order.js:3553 +#: templates/js/translated/build.js:2657 templates/js/translated/order.js:3579 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1887 templates/js/translated/order.js:3633 +#: templates/js/translated/build.js:1887 templates/js/translated/order.js:3659 msgid "Build stock" msgstr "" @@ -8215,7 +8205,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1894 templates/js/translated/order.js:3626 +#: templates/js/translated/build.js:1894 templates/js/translated/order.js:3652 msgid "Allocate stock" msgstr "" @@ -8867,15 +8857,15 @@ msgstr "" msgid "Items" msgstr "" -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3685 +#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3711 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3707 +#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3733 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3718 +#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3744 msgid "Delete Line Item" msgstr "" @@ -8888,13 +8878,13 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139 -#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3952 +#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978 #: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301 msgid "Unit Price" msgstr "" #: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155 -#: templates/js/translated/order.js:3483 templates/js/translated/order.js:3968 +#: templates/js/translated/order.js:3483 templates/js/translated/order.js:3994 msgid "Total Price" msgstr "" @@ -8907,39 +8897,39 @@ msgstr "" msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3639 +#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3665 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3640 +#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3666 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3644 +#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3670 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4017 +#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4043 msgid "Duplicate line" msgstr "" -#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4018 +#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4044 msgid "Edit line" msgstr "" -#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4019 +#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4045 msgid "Delete line" msgstr "" -#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4049 +#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4075 msgid "Duplicate Line" msgstr "" -#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4070 +#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4096 msgid "Edit Line" msgstr "" -#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4081 +#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4107 msgid "Delete Line" msgstr "" @@ -9032,39 +9022,39 @@ msgstr "" msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:3623 +#: templates/js/translated/order.js:3649 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:3629 +#: templates/js/translated/order.js:3655 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:3636 templates/js/translated/order.js:3834 +#: templates/js/translated/order.js:3662 templates/js/translated/order.js:3860 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:3648 +#: templates/js/translated/order.js:3674 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:3651 +#: templates/js/translated/order.js:3677 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:3733 +#: templates/js/translated/order.js:3759 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:3842 +#: templates/js/translated/order.js:3868 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:3856 +#: templates/js/translated/order.js:3882 msgid "No matching line items" msgstr "" -#: templates/js/translated/order.js:4092 +#: templates/js/translated/order.js:4118 msgid "No matching lines" msgstr "" @@ -9536,7 +9526,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:887 users/models.py:216 +#: templates/js/translated/stock.js:887 users/models.py:215 msgid "Add" msgstr "" @@ -10271,50 +10261,50 @@ msgstr "" msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:184 +#: users/admin.py:191 msgid "The following users are members of multiple groups:" msgstr "" -#: users/admin.py:207 +#: users/admin.py:214 msgid "Personal info" msgstr "" -#: users/admin.py:208 +#: users/admin.py:215 msgid "Permissions" msgstr "" -#: users/admin.py:211 +#: users/admin.py:218 msgid "Important dates" msgstr "" -#: users/models.py:203 +#: users/models.py:202 msgid "Permission set" msgstr "" -#: users/models.py:211 +#: users/models.py:210 msgid "Group" msgstr "" -#: users/models.py:214 +#: users/models.py:213 msgid "View" msgstr "" -#: users/models.py:214 +#: users/models.py:213 msgid "Permission to view items" msgstr "" -#: users/models.py:216 +#: users/models.py:215 msgid "Permission to add items" msgstr "" -#: users/models.py:218 +#: users/models.py:217 msgid "Change" msgstr "" -#: users/models.py:218 +#: users/models.py:217 msgid "Permissions to edit items" msgstr "" -#: users/models.py:220 +#: users/models.py:219 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po index 5bc1ac446c..f339ec1be4 100644 --- a/InvenTree/locale/es/LC_MESSAGES/django.po +++ b/InvenTree/locale/es/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:43\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -124,7 +124,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "" msgid "parent" msgstr "" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2551,12 +2552,12 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "" @@ -2713,7 +2714,7 @@ msgstr "" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "" msgid "On Order" msgstr "" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -4160,7 +4153,7 @@ msgstr "" msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "" @@ -4193,7 +4186,7 @@ msgstr "" msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" @@ -4397,153 +4390,153 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5414,83 +5407,59 @@ msgstr "" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/es_MX/LC_MESSAGES/django.po b/InvenTree/locale/es_MX/LC_MESSAGES/django.po index 65603d1a5c..b17d3d6faf 100644 --- a/InvenTree/locale/es_MX/LC_MESSAGES/django.po +++ b/InvenTree/locale/es_MX/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-31 04:27+0000\n" +"POT-Creation-Date: 2022-06-03 10:21+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,44 +18,44 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: InvenTree/api.py:49 +#: InvenTree/api.py:46 msgid "API endpoint not found" msgstr "" -#: InvenTree/exceptions.py:50 +#: InvenTree/exceptions.py:46 msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:96 +#: InvenTree/fields.py:94 msgid "Enter date" msgstr "" -#: InvenTree/forms.py:124 templates/account/email_confirm.html:20 +#: InvenTree/forms.py:117 templates/account/email_confirm.html:20 #: templates/js/translated/forms.js:630 msgid "Confirm" msgstr "" -#: InvenTree/forms.py:140 +#: InvenTree/forms.py:134 msgid "Confirm delete" msgstr "" -#: InvenTree/forms.py:141 +#: InvenTree/forms.py:135 msgid "Confirm item deletion" msgstr "" -#: InvenTree/forms.py:172 +#: InvenTree/forms.py:167 msgid "Enter password" msgstr "" -#: InvenTree/forms.py:173 +#: InvenTree/forms.py:168 msgid "Enter new password" msgstr "" -#: InvenTree/forms.py:180 +#: InvenTree/forms.py:175 msgid "Confirm password" msgstr "" -#: InvenTree/forms.py:181 +#: InvenTree/forms.py:176 msgid "Confirm new password" msgstr "" @@ -71,72 +71,73 @@ msgstr "" msgid "Email address confirmation" msgstr "" -#: InvenTree/forms.py:258 +#: InvenTree/forms.py:259 msgid "You must type the same email each time." msgstr "" -#: InvenTree/helpers.py:449 +#: InvenTree/helpers.py:402 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:456 order/models.py:365 order/models.py:519 +#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:459 +#: InvenTree/helpers.py:412 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:491 +#: InvenTree/helpers.py:444 #, python-brace-format msgid "Invalid group range: {g}" msgstr "" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:447 #, python-brace-format msgid "Invalid group: {g}" msgstr "" -#: InvenTree/helpers.py:522 +#: InvenTree/helpers.py:475 #, python-brace-format msgid "Invalid group sequence: {g}" msgstr "" -#: InvenTree/helpers.py:530 +#: InvenTree/helpers.py:483 #, python-brace-format msgid "Invalid/no group {group}" msgstr "" -#: InvenTree/helpers.py:536 +#: InvenTree/helpers.py:489 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:540 +#: InvenTree/helpers.py:493 #, python-brace-format msgid "Number of unique serial numbers ({s}) must match quantity ({q})" msgstr "" -#: InvenTree/models.py:181 +#: InvenTree/models.py:174 msgid "Missing file" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:175 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:193 stock/models.py:2202 -#: templates/js/translated/attachment.js:119 +#: InvenTree/models.py:187 stock/models.py:2087 +#: templates/js/translated/attachment.js:101 +#: templates/js/translated/attachment.js:198 msgid "Attachment" msgstr "" -#: InvenTree/models.py:194 +#: InvenTree/models.py:188 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:200 company/models.py:123 company/models.py:337 -#: company/models.py:569 order/models.py:139 order/models.py:1273 -#: part/models.py:855 +#: InvenTree/models.py:194 company/models.py:123 company/models.py:272 +#: company/models.py:506 order/models.py:135 order/models.py:1235 +#: part/models.py:795 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:655 #: templates/js/translated/company.js:946 templates/js/translated/order.js:2676 @@ -144,64 +145,65 @@ msgstr "" msgid "Link" msgstr "" -#: InvenTree/models.py:201 build/models.py:330 part/models.py:856 -#: stock/models.py:665 +#: InvenTree/models.py:195 build/models.py:320 part/models.py:796 +#: stock/models.py:642 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:204 templates/js/translated/attachment.js:163 +#: InvenTree/models.py:198 templates/js/translated/attachment.js:102 +#: templates/js/translated/attachment.js:242 msgid "Comment" msgstr "" -#: InvenTree/models.py:204 +#: InvenTree/models.py:198 msgid "File comment" msgstr "" -#: InvenTree/models.py:210 InvenTree/models.py:211 common/models.py:1581 -#: common/models.py:1582 common/models.py:1816 common/models.py:1817 -#: common/models.py:2044 common/models.py:2045 part/models.py:2357 -#: part/models.py:2377 plugin/models.py:260 plugin/models.py:261 +#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499 +#: common/models.py:1500 common/models.py:1728 common/models.py:1729 +#: common/models.py:1991 common/models.py:1992 part/models.py:2153 +#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2513 msgid "User" msgstr "" -#: InvenTree/models.py:214 +#: InvenTree/models.py:208 msgid "upload date" msgstr "" -#: InvenTree/models.py:237 +#: InvenTree/models.py:230 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:260 +#: InvenTree/models.py:253 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:270 +#: InvenTree/models.py:263 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:273 +#: InvenTree/models.py:266 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:280 +#: InvenTree/models.py:273 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:287 +#: InvenTree/models.py:280 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:322 +#: InvenTree/models.py:314 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:338 InvenTree/models.py:339 common/models.py:1802 -#: company/models.py:420 label/models.py:104 part/models.py:799 -#: part/models.py:2541 plugin/models.py:99 report/models.py:169 +#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714 +#: company/models.py:354 label/models.py:101 part/models.py:739 +#: part/models.py:2331 plugin/models.py:93 report/models.py:151 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:49 @@ -215,15 +217,15 @@ msgstr "" msgid "Name" msgstr "" -#: InvenTree/models.py:345 build/models.py:207 -#: build/templates/build/detail.html:24 company/models.py:343 -#: company/models.py:575 company/templates/company/company_base.html:71 +#: InvenTree/models.py:340 build/models.py:197 +#: build/templates/build/detail.html:24 company/models.py:278 +#: company/models.py:512 company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:73 label/models.py:111 -#: order/models.py:137 part/models.py:822 part/templates/part/category.html:74 +#: company/templates/company/supplier_part.html:73 label/models.py:108 +#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:182 -#: report/models.py:547 report/models.py:586 +#: part/templates/part/set_category.html:14 report/models.py:164 +#: report/models.py:509 report/models.py:550 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:103 #: templates/InvenTree/settings/plugin_settings.html:33 @@ -239,232 +241,232 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:346 +#: InvenTree/models.py:341 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:354 +#: InvenTree/models.py:349 msgid "parent" msgstr "" -#: InvenTree/serializers.py:59 part/models.py:2874 +#: InvenTree/serializers.py:52 part/models.py:2650 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:293 +#: InvenTree/serializers.py:271 msgid "Filename" msgstr "" -#: InvenTree/serializers.py:328 +#: InvenTree/serializers.py:306 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:349 +#: InvenTree/serializers.py:328 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:350 +#: InvenTree/serializers.py:329 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:374 +#: InvenTree/serializers.py:350 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:380 +#: InvenTree/serializers.py:356 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:401 +#: InvenTree/serializers.py:377 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:404 +#: InvenTree/serializers.py:380 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:530 +#: InvenTree/serializers.py:503 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:533 +#: InvenTree/serializers.py:506 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:583 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:629 +#: InvenTree/serializers.py:592 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/settings.py:669 +#: InvenTree/settings.py:667 msgid "Czech" msgstr "" -#: InvenTree/settings.py:670 +#: InvenTree/settings.py:668 msgid "German" msgstr "" -#: InvenTree/settings.py:671 +#: InvenTree/settings.py:669 msgid "Greek" msgstr "" -#: InvenTree/settings.py:672 +#: InvenTree/settings.py:670 msgid "English" msgstr "" -#: InvenTree/settings.py:673 +#: InvenTree/settings.py:671 msgid "Spanish" msgstr "" -#: InvenTree/settings.py:674 +#: InvenTree/settings.py:672 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:675 +#: InvenTree/settings.py:673 msgid "Farsi / Persian" msgstr "" -#: InvenTree/settings.py:676 +#: InvenTree/settings.py:674 msgid "French" msgstr "" -#: InvenTree/settings.py:677 +#: InvenTree/settings.py:675 msgid "Hebrew" msgstr "" -#: InvenTree/settings.py:678 +#: InvenTree/settings.py:676 msgid "Hungarian" msgstr "" -#: InvenTree/settings.py:679 +#: InvenTree/settings.py:677 msgid "Italian" msgstr "" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:678 msgid "Japanese" msgstr "" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:679 msgid "Korean" msgstr "" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:680 msgid "Dutch" msgstr "" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:681 msgid "Norwegian" msgstr "" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:682 msgid "Polish" msgstr "" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:683 msgid "Portuguese" msgstr "" -#: InvenTree/settings.py:686 +#: InvenTree/settings.py:684 msgid "Portuguese (Brazilian)" msgstr "" -#: InvenTree/settings.py:687 +#: InvenTree/settings.py:685 msgid "Russian" msgstr "" -#: InvenTree/settings.py:688 +#: InvenTree/settings.py:686 msgid "Swedish" msgstr "" -#: InvenTree/settings.py:689 +#: InvenTree/settings.py:687 msgid "Thai" msgstr "" -#: InvenTree/settings.py:690 +#: InvenTree/settings.py:688 msgid "Turkish" msgstr "" -#: InvenTree/settings.py:691 +#: InvenTree/settings.py:689 msgid "Vietnamese" msgstr "" -#: InvenTree/settings.py:692 +#: InvenTree/settings.py:690 msgid "Chinese" msgstr "" -#: InvenTree/status.py:108 +#: InvenTree/status.py:99 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:112 +#: InvenTree/status.py:103 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:115 +#: InvenTree/status.py:106 msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 +#: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140 #: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "" -#: InvenTree/status_codes.py:102 +#: InvenTree/status_codes.py:100 msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:309 +#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:309 #: order/templates/order/order_base.html:134 #: order/templates/order/sales_order_base.html:133 msgid "Complete" msgstr "" -#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 +#: InvenTree/status_codes.py:102 InvenTree/status_codes.py:142 #: InvenTree/status_codes.py:308 msgid "Cancelled" msgstr "" -#: InvenTree/status_codes.py:105 InvenTree/status_codes.py:145 -#: InvenTree/status_codes.py:184 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:143 +#: InvenTree/status_codes.py:183 msgid "Lost" msgstr "" -#: InvenTree/status_codes.py:106 InvenTree/status_codes.py:146 -#: InvenTree/status_codes.py:187 +#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 +#: InvenTree/status_codes.py:186 msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:143 order/models.py:1141 -#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3581 +#: InvenTree/status_codes.py:141 order/models.py:1114 +#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607 msgid "Shipped" msgstr "" -#: InvenTree/status_codes.py:180 +#: InvenTree/status_codes.py:179 msgid "OK" msgstr "" -#: InvenTree/status_codes.py:181 +#: InvenTree/status_codes.py:180 msgid "Attention needed" msgstr "" -#: InvenTree/status_codes.py:182 +#: InvenTree/status_codes.py:181 msgid "Damaged" msgstr "" -#: InvenTree/status_codes.py:183 +#: InvenTree/status_codes.py:182 msgid "Destroyed" msgstr "" -#: InvenTree/status_codes.py:185 +#: InvenTree/status_codes.py:184 msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:186 +#: InvenTree/status_codes.py:185 msgid "Quarantined" msgstr "" @@ -560,123 +562,123 @@ msgstr "" msgid "Production" msgstr "" -#: InvenTree/validators.py:23 +#: InvenTree/validators.py:18 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:51 +#: InvenTree/validators.py:45 msgid "Invalid character in part name" msgstr "" -#: InvenTree/validators.py:64 +#: InvenTree/validators.py:57 #, python-brace-format msgid "IPN must match regex pattern {pat}" msgstr "" -#: InvenTree/validators.py:78 InvenTree/validators.py:92 -#: InvenTree/validators.py:106 +#: InvenTree/validators.py:68 InvenTree/validators.py:79 +#: InvenTree/validators.py:90 #, python-brace-format msgid "Reference must match pattern {pattern}" msgstr "" -#: InvenTree/validators.py:114 +#: InvenTree/validators.py:97 #, python-brace-format msgid "Illegal character in name ({x})" msgstr "" -#: InvenTree/validators.py:135 InvenTree/validators.py:151 +#: InvenTree/validators.py:116 InvenTree/validators.py:132 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:153 +#: InvenTree/validators.py:134 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:160 +#: InvenTree/validators.py:141 msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:534 +#: InvenTree/views.py:522 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:583 +#: InvenTree/views.py:571 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:22 +#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:609 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "" -#: InvenTree/views.py:628 +#: InvenTree/views.py:618 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:875 templates/navbar.html:152 +#: InvenTree/views.py:842 templates/navbar.html:152 msgid "System Information" msgstr "" -#: build/models.py:133 +#: build/models.py:126 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:137 build/templates/build/build_base.html:9 +#: build/models.py:131 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 #: templates/js/translated/build.js:727 msgid "Build Order" msgstr "" -#: build/models.py:138 build/templates/build/build_base.html:13 +#: build/models.py:132 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 -#: templates/InvenTree/settings/sidebar.html:45 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:45 users/models.py:40 msgid "Build Orders" msgstr "" -#: build/models.py:198 +#: build/models.py:188 msgid "Build Order Reference" msgstr "" -#: build/models.py:199 order/models.py:295 order/models.py:647 -#: order/models.py:942 part/models.py:2785 +#: build/models.py:189 order/models.py:288 order/models.py:638 +#: order/models.py:916 part/models.py:2568 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858 #: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919 #: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448 -#: templates/js/translated/order.js:3933 +#: templates/js/translated/order.js:3959 msgid "Reference" msgstr "" -#: build/models.py:210 +#: build/models.py:200 msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:169 +#: build/models.py:209 build/templates/build/build_base.html:169 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:220 +#: build/models.py:210 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:77 -#: build/templates/build/detail.html:29 company/models.py:711 -#: order/models.py:1041 order/models.py:1130 part/models.py:354 -#: part/models.py:2303 part/models.py:2319 part/models.py:2338 -#: part/models.py:2355 part/models.py:2457 part/models.py:2579 -#: part/models.py:2669 part/models.py:2760 part/models.py:3047 -#: part/serializers.py:917 part/templates/part/part_app_base.html:8 +#: build/models.py:215 build/templates/build/build_base.html:77 +#: build/templates/build/detail.html:29 company/models.py:647 +#: order/models.py:1012 order/models.py:1103 part/models.py:336 +#: part/models.py:2099 part/models.py:2114 part/models.py:2133 +#: part/models.py:2151 part/models.py:2250 part/models.py:2370 +#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 @@ -705,193 +707,193 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:233 +#: build/models.py:223 msgid "Select part to build" msgstr "" -#: build/models.py:238 +#: build/models.py:228 msgid "Sales Order Reference" msgstr "" -#: build/models.py:242 +#: build/models.py:232 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 build/serializers.py:790 +#: build/models.py:237 build/serializers.py:758 #: templates/js/translated/build.js:2071 templates/js/translated/order.js:2807 msgid "Source Location" msgstr "" -#: build/models.py:251 +#: build/models.py:241 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:256 +#: build/models.py:246 msgid "Destination Location" msgstr "" -#: build/models.py:260 +#: build/models.py:250 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:264 +#: build/models.py:254 msgid "Build Quantity" msgstr "" -#: build/models.py:267 +#: build/models.py:257 msgid "Number of stock items to build" msgstr "" -#: build/models.py:271 +#: build/models.py:261 msgid "Completed items" msgstr "" -#: build/models.py:273 +#: build/models.py:263 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 +#: build/models.py:267 msgid "Build Status" msgstr "" -#: build/models.py:281 +#: build/models.py:271 msgid "Build status code" msgstr "" -#: build/models.py:285 build/serializers.py:220 order/serializers.py:440 -#: stock/models.py:669 templates/js/translated/order.js:1175 +#: build/models.py:275 build/serializers.py:215 order/serializers.py:440 +#: stock/models.py:646 templates/js/translated/order.js:1175 msgid "Batch Code" msgstr "" -#: build/models.py:289 build/serializers.py:221 +#: build/models.py:279 build/serializers.py:216 msgid "Batch code for this build output" msgstr "" -#: build/models.py:292 order/models.py:141 part/models.py:994 +#: build/models.py:282 order/models.py:137 part/models.py:932 #: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489 msgid "Creation Date" msgstr "" -#: build/models.py:296 order/models.py:669 +#: build/models.py:286 order/models.py:660 msgid "Target completion date" msgstr "" -#: build/models.py:297 +#: build/models.py:287 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:300 order/models.py:338 +#: build/models.py:290 order/models.py:331 #: templates/js/translated/build.js:2558 msgid "Completion Date" msgstr "" -#: build/models.py:306 +#: build/models.py:296 msgid "completed by" msgstr "" -#: build/models.py:314 templates/js/translated/build.js:2526 +#: build/models.py:304 templates/js/translated/build.js:2526 msgid "Issued by" msgstr "" -#: build/models.py:315 +#: build/models.py:305 msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:155 +#: build/models.py:313 build/templates/build/build_base.html:190 +#: build/templates/build/detail.html:115 order/models.py:151 #: order/templates/order/order_base.html:176 -#: order/templates/order/sales_order_base.html:183 part/models.py:998 +#: order/templates/order/sales_order_base.html:183 part/models.py:936 #: report/templates/report/inventree_build_order_base.html:159 #: templates/js/translated/build.js:2538 templates/js/translated/order.js:1690 msgid "Responsible" msgstr "" -#: build/models.py:324 +#: build/models.py:314 msgid "User responsible for this build order" msgstr "" -#: build/models.py:329 build/templates/build/detail.html:101 +#: build/models.py:319 build/templates/build/detail.html:101 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:132 -#: part/templates/part/part_base.html:346 stock/models.py:663 +#: part/templates/part/part_base.html:346 stock/models.py:640 #: stock/templates/stock/item_base.html:205 msgid "External Link" msgstr "" -#: build/models.py:334 build/serializers.py:390 +#: build/models.py:324 build/serializers.py:374 #: build/templates/build/sidebar.html:21 company/models.py:134 -#: company/models.py:582 company/templates/company/sidebar.html:25 -#: order/models.py:159 order/models.py:944 order/models.py:1251 +#: company/models.py:519 company/templates/company/sidebar.html:25 +#: order/models.py:155 order/models.py:918 order/models.py:1213 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:983 +#: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:736 stock/models.py:2102 stock/models.py:2208 -#: stock/serializers.py:321 stock/serializers.py:459 stock/serializers.py:728 -#: stock/serializers.py:826 stock/serializers.py:958 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 #: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687 -#: templates/js/translated/order.js:3606 templates/js/translated/order.js:4004 +#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030 #: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916 msgid "Notes" msgstr "" -#: build/models.py:335 +#: build/models.py:325 msgid "Extra build notes" msgstr "" -#: build/models.py:773 +#: build/models.py:711 msgid "No build output specified" msgstr "" -#: build/models.py:776 +#: build/models.py:714 msgid "Build output is already completed" msgstr "" -#: build/models.py:779 +#: build/models.py:717 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1213 +#: build/models.py:1108 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1222 +#: build/models.py:1117 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1232 +#: build/models.py:1127 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1238 order/models.py:1413 +#: build/models.py:1133 order/models.py:1372 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1244 +#: build/models.py:1139 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1301 +#: build/models.py:1196 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1375 stock/templates/stock/item_base.html:177 +#: build/models.py:1265 stock/templates/stock/item_base.html:177 #: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454 #: templates/navbar.html:38 msgid "Build" msgstr "" -#: build/models.py:1376 +#: build/models.py:1266 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1392 build/serializers.py:631 order/serializers.py:964 -#: order/serializers.py:982 stock/serializers.py:393 stock/serializers.py:666 -#: stock/serializers.py:784 stock/templates/stock/item_base.html:10 +#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -904,17 +906,17 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1393 +#: build/models.py:1283 msgid "Source stock item" msgstr "" -#: build/models.py:1405 build/serializers.py:190 +#: build/models.py:1295 build/serializers.py:183 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1624 -#: company/forms.py:38 company/templates/company/supplier_part.html:258 -#: order/models.py:935 order/models.py:1453 order/serializers.py:1103 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:121 -#: part/forms.py:137 part/forms.py:153 part/models.py:2776 +#: build/templates/build/detail.html:34 common/models.py:1536 +#: company/forms.py:36 company/templates/company/supplier_part.html:258 +#: order/models.py:909 order/models.py:1412 order/serializers.py:1134 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:91 +#: part/forms.py:106 part/forms.py:121 part/models.py:2559 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -923,7 +925,7 @@ msgstr "" #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/serializers.py:282 stock/templates/stock/item_base.html:292 +#: stock/serializers.py:279 stock/templates/stock/item_base.html:292 #: stock/templates/stock/item_base.html:300 #: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689 #: templates/js/translated/bom.js:866 templates/js/translated/build.js:422 @@ -935,7 +937,7 @@ msgstr "" #: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126 #: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143 #: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320 -#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3939 +#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965 #: templates/js/translated/part.js:967 templates/js/translated/part.js:1969 #: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234 #: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403 @@ -944,87 +946,88 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1406 +#: build/models.py:1296 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1414 +#: build/models.py:1304 msgid "Install into" msgstr "" -#: build/models.py:1415 +#: build/models.py:1305 msgid "Destination stock item" msgstr "" -#: build/serializers.py:135 build/serializers.py:660 +#: build/serializers.py:128 build/serializers.py:632 #: templates/js/translated/build.js:1163 msgid "Build Output" msgstr "" -#: build/serializers.py:147 +#: build/serializers.py:140 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:151 +#: build/serializers.py:144 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:155 +#: build/serializers.py:148 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:166 +#: build/serializers.py:159 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:191 +#: build/serializers.py:184 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:203 build/serializers.py:651 order/models.py:363 -#: order/serializers.py:289 order/serializers.py:435 part/serializers.py:588 -#: part/serializers.py:1084 stock/models.py:496 stock/models.py:1307 -#: stock/serializers.py:294 +#: build/serializers.py:198 build/serializers.py:623 order/models.py:363 +#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 +#: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:210 +#: build/serializers.py:205 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:213 +#: build/serializers.py:208 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:227 order/serializers.py:448 order/serializers.py:1107 -#: stock/serializers.py:303 templates/js/translated/order.js:1186 +#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138 +#: stock/serializers.py:297 templates/js/translated/order.js:1186 #: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:228 +#: build/serializers.py:223 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:236 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:242 +#: build/serializers.py:237 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:276 stock/api.py:590 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:329 build/serializers.py:402 +#: build/serializers.py:317 build/serializers.py:386 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:372 order/serializers.py:421 order/serializers.py:526 -#: stock/serializers.py:314 stock/serializers.py:454 stock/serializers.py:819 -#: stock/serializers.py:1060 stock/templates/stock/item_base.html:390 +#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1036,12 +1039,12 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:373 +#: build/serializers.py:357 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:379 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:663 +#: build/serializers.py:363 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:654 #: order/serializers.py:458 stock/templates/stock/item_base.html:423 #: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510 #: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660 @@ -1050,133 +1053,133 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:385 +#: build/serializers.py:369 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:386 +#: build/serializers.py:370 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:456 +#: build/serializers.py:439 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:457 +#: build/serializers.py:440 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:463 +#: build/serializers.py:446 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:464 +#: build/serializers.py:447 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:470 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:490 +#: build/serializers.py:471 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:500 templates/js/translated/build.js:195 +#: build/serializers.py:481 templates/js/translated/build.js:195 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:505 +#: build/serializers.py:486 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:506 +#: build/serializers.py:487 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:516 templates/js/translated/build.js:199 +#: build/serializers.py:497 templates/js/translated/build.js:199 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:525 +#: build/serializers.py:506 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:528 build/templates/build/build_base.html:95 +#: build/serializers.py:509 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:556 build/serializers.py:605 part/models.py:2900 -#: part/models.py:3039 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 +#: part/models.py:2811 msgid "BOM Item" msgstr "" -#: build/serializers.py:566 +#: build/serializers.py:545 msgid "Build output" msgstr "" -#: build/serializers.py:575 +#: build/serializers.py:553 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:622 +#: build/serializers.py:594 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:637 stock/serializers.py:673 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:694 order/serializers.py:1015 +#: build/serializers.py:667 order/serializers.py:1052 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:700 +#: build/serializers.py:673 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:707 +#: build/serializers.py:680 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:712 +#: build/serializers.py:685 msgid "This stock item has already been allocated to this build output" msgstr "" -#: build/serializers.py:739 order/serializers.py:1277 +#: build/serializers.py:708 order/serializers.py:1298 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:791 +#: build/serializers.py:759 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:799 +#: build/serializers.py:767 msgid "Exclude Location" msgstr "" -#: build/serializers.py:800 +#: build/serializers.py:768 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:805 +#: build/serializers.py:773 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:806 +#: build/serializers.py:774 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:811 +#: build/serializers.py:779 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:812 +#: build/serializers.py:780 msgid "Allow allocation of substitute parts" msgstr "" -#: build/tasks.py:95 +#: build/tasks.py:96 msgid "Stock required for build order" msgstr "" @@ -1242,7 +1245,7 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:948 +#: build/templates/build/detail.html:131 order/models.py:922 #: order/templates/order/order_base.html:162 #: order/templates/order/sales_order_base.html:164 #: report/templates/report/inventree_build_order_base.html:126 @@ -1275,8 +1278,8 @@ msgid "Completed" msgstr "" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:1127 -#: order/models.py:1223 order/models.py:1357 +#: build/templates/build/detail.html:94 order/models.py:1100 +#: order/models.py:1185 order/models.py:1320 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 @@ -1317,7 +1320,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1063 +#: build/templates/build/detail.html:49 order/models.py:1034 #: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029 msgid "Destination" msgstr "" @@ -1476,7 +1479,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -1509,945 +1512,945 @@ msgstr "" msgid "Completed Outputs" msgstr "" -#: build/views.py:80 +#: build/views.py:59 msgid "Delete Build Order" msgstr "" -#: common/files.py:66 +#: common/files.py:62 msgid "Unsupported file format: {ext.upper()}" msgstr "" -#: common/files.py:68 +#: common/files.py:64 msgid "Error reading file (invalid encoding)" msgstr "" -#: common/files.py:73 +#: common/files.py:69 msgid "Error reading file (invalid format)" msgstr "" -#: common/files.py:75 +#: common/files.py:71 msgid "Error reading file (incorrect dimension)" msgstr "" -#: common/files.py:77 +#: common/files.py:73 msgid "Error reading file (data could be corrupted)" msgstr "" -#: common/forms.py:31 +#: common/forms.py:29 msgid "File" msgstr "" -#: common/forms.py:32 +#: common/forms.py:30 msgid "Select file to upload" msgstr "" -#: common/forms.py:47 +#: common/forms.py:44 msgid "{name.title()} File" msgstr "" -#: common/forms.py:48 +#: common/forms.py:45 #, python-brace-format msgid "Select {name} file to upload" msgstr "" -#: common/models.py:394 +#: common/models.py:365 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:396 +#: common/models.py:367 msgid "Settings value" msgstr "" -#: common/models.py:437 +#: common/models.py:408 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:457 +#: common/models.py:425 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:468 +#: common/models.py:436 msgid "Value must be an integer value" msgstr "" -#: common/models.py:517 +#: common/models.py:481 msgid "Key string must be unique" msgstr "" -#: common/models.py:739 +#: common/models.py:665 msgid "No group" msgstr "" -#: common/models.py:781 +#: common/models.py:704 msgid "Restart required" msgstr "" -#: common/models.py:782 +#: common/models.py:705 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:789 +#: common/models.py:712 msgid "Server Instance Name" msgstr "" -#: common/models.py:791 +#: common/models.py:714 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:795 +#: common/models.py:718 msgid "Use instance name" msgstr "" -#: common/models.py:796 +#: common/models.py:719 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:802 +#: common/models.py:725 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:803 +#: common/models.py:726 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:809 company/models.py:92 company/models.py:93 +#: common/models.py:732 company/models.py:92 company/models.py:93 msgid "Company name" msgstr "" -#: common/models.py:810 +#: common/models.py:733 msgid "Internal company name" msgstr "" -#: common/models.py:815 +#: common/models.py:738 msgid "Base URL" msgstr "" -#: common/models.py:816 +#: common/models.py:739 msgid "Base URL for server instance" msgstr "" -#: common/models.py:822 +#: common/models.py:745 msgid "Default Currency" msgstr "" -#: common/models.py:823 +#: common/models.py:746 msgid "Default currency" msgstr "" -#: common/models.py:829 +#: common/models.py:752 msgid "Download from URL" msgstr "" -#: common/models.py:830 +#: common/models.py:753 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:836 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:759 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:837 +#: common/models.py:760 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:843 +#: common/models.py:766 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:844 +#: common/models.py:767 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:850 +#: common/models.py:773 msgid "IPN Regex" msgstr "" -#: common/models.py:851 +#: common/models.py:774 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:855 +#: common/models.py:778 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:856 +#: common/models.py:779 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:862 +#: common/models.py:785 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:863 +#: common/models.py:786 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:869 +#: common/models.py:792 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:870 +#: common/models.py:793 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:876 +#: common/models.py:799 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:877 +#: common/models.py:800 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:883 +#: common/models.py:806 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:884 +#: common/models.py:807 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:890 +#: common/models.py:813 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:891 +#: common/models.py:814 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:897 part/models.py:2581 report/models.py:175 +#: common/models.py:820 part/models.py:2372 report/models.py:157 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "" -#: common/models.py:898 +#: common/models.py:821 msgid "Parts are templates by default" msgstr "" -#: common/models.py:904 part/models.py:946 templates/js/translated/bom.js:1390 +#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "" -#: common/models.py:905 +#: common/models.py:828 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:911 part/models.py:952 +#: common/models.py:834 part/models.py:890 #: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "" -#: common/models.py:912 +#: common/models.py:835 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:918 part/models.py:963 +#: common/models.py:841 part/models.py:901 msgid "Purchaseable" msgstr "" -#: common/models.py:919 +#: common/models.py:842 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:925 part/models.py:968 +#: common/models.py:848 part/models.py:906 #: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "" -#: common/models.py:926 +#: common/models.py:849 msgid "Parts are salable by default" msgstr "" -#: common/models.py:932 part/models.py:958 +#: common/models.py:855 part/models.py:896 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "" -#: common/models.py:933 +#: common/models.py:856 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:939 part/models.py:978 +#: common/models.py:862 part/models.py:916 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:940 +#: common/models.py:863 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:946 +#: common/models.py:869 msgid "Show Import in Views" msgstr "" -#: common/models.py:947 +#: common/models.py:870 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:953 +#: common/models.py:876 msgid "Show Price in Forms" msgstr "" -#: common/models.py:954 +#: common/models.py:877 msgid "Display part price in some forms" msgstr "" -#: common/models.py:965 +#: common/models.py:888 msgid "Show Price in BOM" msgstr "" -#: common/models.py:966 +#: common/models.py:889 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:977 +#: common/models.py:900 msgid "Show Price History" msgstr "" -#: common/models.py:978 +#: common/models.py:901 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:984 +#: common/models.py:907 msgid "Show related parts" msgstr "" -#: common/models.py:985 +#: common/models.py:908 msgid "Display related parts for a part" msgstr "" -#: common/models.py:991 +#: common/models.py:914 msgid "Create initial stock" msgstr "" -#: common/models.py:992 +#: common/models.py:915 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:998 +#: common/models.py:921 msgid "Internal Prices" msgstr "" -#: common/models.py:999 +#: common/models.py:922 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1005 +#: common/models.py:928 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:1006 +#: common/models.py:929 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:1012 +#: common/models.py:935 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1013 +#: common/models.py:936 msgid "Format to display the part name" msgstr "" -#: common/models.py:1020 +#: common/models.py:943 msgid "Enable Reports" msgstr "" -#: common/models.py:1021 +#: common/models.py:944 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1027 templates/stats.html:25 +#: common/models.py:950 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1028 +#: common/models.py:951 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1034 +#: common/models.py:957 msgid "Page Size" msgstr "" -#: common/models.py:1035 +#: common/models.py:958 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1045 +#: common/models.py:968 msgid "Test Reports" msgstr "" -#: common/models.py:1046 +#: common/models.py:969 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1052 +#: common/models.py:975 msgid "Batch Code Template" msgstr "" -#: common/models.py:1053 +#: common/models.py:976 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1058 +#: common/models.py:981 msgid "Stock Expiry" msgstr "" -#: common/models.py:1059 +#: common/models.py:982 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1065 +#: common/models.py:988 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1066 +#: common/models.py:989 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1072 +#: common/models.py:995 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1073 +#: common/models.py:996 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1075 +#: common/models.py:998 msgid "days" msgstr "" -#: common/models.py:1080 +#: common/models.py:1003 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1081 +#: common/models.py:1004 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1087 +#: common/models.py:1010 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1088 +#: common/models.py:1011 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1094 +#: common/models.py:1017 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:1095 +#: common/models.py:1018 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:1100 +#: common/models.py:1023 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:1101 +#: common/models.py:1024 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:1105 +#: common/models.py:1028 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:1106 +#: common/models.py:1029 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:1111 +#: common/models.py:1034 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1112 +#: common/models.py:1035 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1118 +#: common/models.py:1041 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:1119 +#: common/models.py:1042 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:1125 +#: common/models.py:1048 msgid "Enable password forgot" msgstr "" -#: common/models.py:1126 +#: common/models.py:1049 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1132 +#: common/models.py:1055 msgid "Enable registration" msgstr "" -#: common/models.py:1133 +#: common/models.py:1056 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1139 +#: common/models.py:1062 msgid "Enable SSO" msgstr "" -#: common/models.py:1140 +#: common/models.py:1063 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1146 +#: common/models.py:1069 msgid "Email required" msgstr "" -#: common/models.py:1147 +#: common/models.py:1070 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1153 +#: common/models.py:1076 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1154 +#: common/models.py:1077 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1160 +#: common/models.py:1083 msgid "Mail twice" msgstr "" -#: common/models.py:1161 +#: common/models.py:1084 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1167 +#: common/models.py:1090 msgid "Password twice" msgstr "" -#: common/models.py:1168 +#: common/models.py:1091 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1174 +#: common/models.py:1097 msgid "Group on signup" msgstr "" -#: common/models.py:1175 +#: common/models.py:1098 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1181 +#: common/models.py:1104 msgid "Enforce MFA" msgstr "" -#: common/models.py:1182 +#: common/models.py:1105 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1188 +#: common/models.py:1111 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1189 +#: common/models.py:1112 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1197 +#: common/models.py:1120 msgid "Enable URL integration" msgstr "" -#: common/models.py:1198 +#: common/models.py:1121 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1205 +#: common/models.py:1128 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1206 +#: common/models.py:1129 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1213 +#: common/models.py:1136 msgid "Enable app integration" msgstr "" -#: common/models.py:1214 +#: common/models.py:1137 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1221 +#: common/models.py:1144 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1222 +#: common/models.py:1145 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1229 +#: common/models.py:1152 msgid "Enable event integration" msgstr "" -#: common/models.py:1230 +#: common/models.py:1153 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1245 common/models.py:1574 +#: common/models.py:1170 common/models.py:1492 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1276 +#: common/models.py:1192 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1277 +#: common/models.py:1193 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1283 +#: common/models.py:1199 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1284 +#: common/models.py:1200 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1290 +#: common/models.py:1206 msgid "Show latest parts" msgstr "" -#: common/models.py:1291 +#: common/models.py:1207 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1297 +#: common/models.py:1213 msgid "Recent Part Count" msgstr "" -#: common/models.py:1298 +#: common/models.py:1214 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1304 +#: common/models.py:1220 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1305 +#: common/models.py:1221 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1311 +#: common/models.py:1227 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1312 +#: common/models.py:1228 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1318 +#: common/models.py:1234 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1319 +#: common/models.py:1235 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1325 +#: common/models.py:1241 msgid "Show low stock" msgstr "" -#: common/models.py:1326 +#: common/models.py:1242 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1332 +#: common/models.py:1248 msgid "Show depleted stock" msgstr "" -#: common/models.py:1333 +#: common/models.py:1249 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1339 +#: common/models.py:1255 msgid "Show needed stock" msgstr "" -#: common/models.py:1340 +#: common/models.py:1256 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1346 +#: common/models.py:1262 msgid "Show expired stock" msgstr "" -#: common/models.py:1347 +#: common/models.py:1263 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1353 +#: common/models.py:1269 msgid "Show stale stock" msgstr "" -#: common/models.py:1354 +#: common/models.py:1270 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1360 +#: common/models.py:1276 msgid "Show pending builds" msgstr "" -#: common/models.py:1361 +#: common/models.py:1277 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1367 +#: common/models.py:1283 msgid "Show overdue builds" msgstr "" -#: common/models.py:1368 +#: common/models.py:1284 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1374 +#: common/models.py:1290 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1375 +#: common/models.py:1291 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1381 +#: common/models.py:1297 msgid "Show overdue POs" msgstr "" -#: common/models.py:1382 +#: common/models.py:1298 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1388 +#: common/models.py:1304 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1389 +#: common/models.py:1305 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1395 +#: common/models.py:1311 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1396 +#: common/models.py:1312 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1401 +#: common/models.py:1317 msgid "Enable label printing" msgstr "" -#: common/models.py:1402 +#: common/models.py:1318 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1408 +#: common/models.py:1324 msgid "Inline label display" msgstr "" -#: common/models.py:1409 +#: common/models.py:1325 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1415 +#: common/models.py:1331 msgid "Inline report display" msgstr "" -#: common/models.py:1416 +#: common/models.py:1332 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1422 +#: common/models.py:1338 msgid "Search Parts" msgstr "" -#: common/models.py:1423 +#: common/models.py:1339 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1429 +#: common/models.py:1345 msgid "Seach Supplier Parts" msgstr "" -#: common/models.py:1430 +#: common/models.py:1346 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:1436 +#: common/models.py:1352 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:1437 +#: common/models.py:1353 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:1443 +#: common/models.py:1359 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1444 +#: common/models.py:1360 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:1450 +#: common/models.py:1366 msgid "Search Categories" msgstr "" -#: common/models.py:1451 +#: common/models.py:1367 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1457 +#: common/models.py:1373 msgid "Search Stock" msgstr "" -#: common/models.py:1458 +#: common/models.py:1374 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1464 +#: common/models.py:1380 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:1465 +#: common/models.py:1381 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:1471 +#: common/models.py:1387 msgid "Search Locations" msgstr "" -#: common/models.py:1472 +#: common/models.py:1388 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1478 +#: common/models.py:1394 msgid "Search Companies" msgstr "" -#: common/models.py:1479 +#: common/models.py:1395 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1485 +#: common/models.py:1401 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1486 +#: common/models.py:1402 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1492 +#: common/models.py:1408 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:1493 +#: common/models.py:1409 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:1499 +#: common/models.py:1415 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1500 +#: common/models.py:1416 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1506 +#: common/models.py:1422 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:1507 +#: common/models.py:1423 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:1513 +#: common/models.py:1429 msgid "Search Preview Results" msgstr "" -#: common/models.py:1514 +#: common/models.py:1430 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1520 +#: common/models.py:1436 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1521 +#: common/models.py:1437 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1527 +#: common/models.py:1443 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1528 +#: common/models.py:1444 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1534 +#: common/models.py:1450 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1535 +#: common/models.py:1451 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1541 +#: common/models.py:1457 msgid "Date Format" msgstr "" -#: common/models.py:1542 +#: common/models.py:1458 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1556 part/templates/part/detail.html:39 +#: common/models.py:1472 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1557 +#: common/models.py:1473 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1625 company/forms.py:39 +#: common/models.py:1537 company/forms.py:37 msgid "Price break quantity" msgstr "" -#: common/models.py:1632 company/serializers.py:285 -#: company/templates/company/supplier_part.html:263 order/models.py:975 +#: common/models.py:1544 company/serializers.py:288 +#: company/templates/company/supplier_part.html:263 order/models.py:949 #: templates/js/translated/part.js:998 templates/js/translated/part.js:1974 msgid "Price" msgstr "" -#: common/models.py:1633 +#: common/models.py:1545 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1793 common/models.py:1930 +#: common/models.py:1705 common/models.py:1883 msgid "Endpoint" msgstr "" -#: common/models.py:1794 +#: common/models.py:1706 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1803 +#: common/models.py:1715 msgid "Name for this webhook" msgstr "" -#: common/models.py:1808 part/models.py:973 plugin/models.py:105 +#: common/models.py:1720 part/models.py:911 plugin/models.py:99 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:308 @@ -2455,107 +2458,107 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:1809 +#: common/models.py:1721 msgid "Is this webhook active" msgstr "" -#: common/models.py:1823 +#: common/models.py:1735 msgid "Token" msgstr "" -#: common/models.py:1824 +#: common/models.py:1736 msgid "Token for access" msgstr "" -#: common/models.py:1831 +#: common/models.py:1743 msgid "Secret" msgstr "" -#: common/models.py:1832 +#: common/models.py:1744 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1897 +#: common/models.py:1850 msgid "Message ID" msgstr "" -#: common/models.py:1898 +#: common/models.py:1851 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1906 +#: common/models.py:1859 msgid "Host" msgstr "" -#: common/models.py:1907 +#: common/models.py:1860 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1914 +#: common/models.py:1867 msgid "Header" msgstr "" -#: common/models.py:1915 +#: common/models.py:1868 msgid "Header of this message" msgstr "" -#: common/models.py:1921 +#: common/models.py:1874 msgid "Body" msgstr "" -#: common/models.py:1922 +#: common/models.py:1875 msgid "Body of this message" msgstr "" -#: common/models.py:1931 +#: common/models.py:1884 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1936 +#: common/models.py:1889 msgid "Worked on" msgstr "" -#: common/models.py:1937 +#: common/models.py:1890 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:90 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:115 part/views.py:194 +#: common/views.py:87 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:102 part/views.py:193 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" -#: common/views.py:91 order/views.py:116 +#: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:194 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" -#: common/views.py:92 +#: common/views.py:89 msgid "Match Items" msgstr "" -#: common/views.py:437 +#: common/views.py:422 msgid "Fields matching failed" msgstr "" -#: common/views.py:492 +#: common/views.py:483 msgid "Parts imported" msgstr "" -#: common/views.py:514 order/templates/order/order_wizard/match_parts.html:19 +#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19 #: part/templates/part/import_wizard/match_references.html:19 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" msgstr "" -#: company/forms.py:20 part/forms.py:41 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:21 part/forms.py:42 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "" @@ -2614,7 +2617,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:131 part/models.py:865 +#: company/models.py:131 part/models.py:805 msgid "Image" msgstr "" @@ -2642,9 +2645,9 @@ msgstr "" msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:144 company/serializers.py:291 -#: company/templates/company/company_base.html:106 part/serializers.py:151 -#: part/serializers.py:183 stock/serializers.py:168 +#: company/models.py:144 company/serializers.py:294 +#: company/templates/company/company_base.html:106 part/serializers.py:137 +#: part/serializers.py:168 stock/serializers.py:162 msgid "Currency" msgstr "" @@ -2652,16 +2655,16 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:309 company/models.py:540 stock/models.py:607 +#: company/models.py:244 company/models.py:477 stock/models.py:584 #: stock/templates/stock/item_base.html:148 templates/js/translated/bom.js:542 msgid "Base Part" msgstr "" -#: company/models.py:313 company/models.py:544 +#: company/models.py:248 company/models.py:481 msgid "Select part" msgstr "" -#: company/models.py:324 company/templates/company/company_base.html:76 +#: company/models.py:259 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:103 #: stock/templates/stock/item_base.html:212 @@ -2673,11 +2676,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:325 templates/js/translated/part.js:236 +#: company/models.py:260 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" -#: company/models.py:331 company/templates/company/manufacturer_part.html:101 +#: company/models.py:266 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:111 #: templates/js/translated/company.js:255 #: templates/js/translated/company.js:487 @@ -2687,58 +2690,58 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:332 templates/js/translated/part.js:247 +#: company/models.py:267 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:338 +#: company/models.py:273 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:344 +#: company/models.py:279 msgid "Manufacturer part description" msgstr "" -#: company/models.py:391 company/models.py:414 company/models.py:563 +#: company/models.py:324 company/models.py:348 company/models.py:500 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:222 msgid "Manufacturer Part" msgstr "" -#: company/models.py:421 +#: company/models.py:355 msgid "Parameter name" msgstr "" -#: company/models.py:427 +#: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2195 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" msgstr "" -#: company/models.py:428 +#: company/models.py:362 msgid "Parameter value" msgstr "" -#: company/models.py:434 part/models.py:940 part/models.py:2549 +#: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:332 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" -#: company/models.py:435 +#: company/models.py:369 msgid "Parameter units" msgstr "" -#: company/models.py:507 +#: company/models.py:445 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:550 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:87 order/models.py:310 +#: company/models.py:487 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:87 order/models.py:303 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265 #: stock/templates/stock/item_base.html:229 #: templates/js/translated/company.js:254 @@ -2749,67 +2752,67 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:551 templates/js/translated/part.js:217 +#: company/models.py:488 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" -#: company/models.py:556 company/templates/company/supplier_part.html:97 +#: company/models.py:493 company/templates/company/supplier_part.html:97 #: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253 #: templates/js/translated/order.js:1894 templates/js/translated/part.js:227 #: templates/js/translated/part.js:942 msgid "SKU" msgstr "" -#: company/models.py:557 templates/js/translated/part.js:228 +#: company/models.py:494 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:564 +#: company/models.py:501 msgid "Select manufacturer part" msgstr "" -#: company/models.py:570 +#: company/models.py:507 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:576 +#: company/models.py:513 msgid "Supplier part description" msgstr "" -#: company/models.py:581 company/templates/company/supplier_part.html:125 -#: part/models.py:2788 part/templates/part/upload_bom.html:59 +#: company/models.py:518 company/templates/company/supplier_part.html:125 +#: part/models.py:2571 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 -#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:398 +#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" msgstr "" -#: company/models.py:585 part/models.py:1858 +#: company/models.py:522 part/models.py:1688 msgid "base cost" msgstr "" -#: company/models.py:585 part/models.py:1858 +#: company/models.py:522 part/models.py:1688 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:587 company/templates/company/supplier_part.html:118 -#: stock/models.py:631 stock/templates/stock/item_base.html:245 +#: company/models.py:524 company/templates/company/supplier_part.html:118 +#: stock/models.py:608 stock/templates/stock/item_base.html:245 #: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912 msgid "Packaging" msgstr "" -#: company/models.py:587 +#: company/models.py:524 msgid "Part packaging" msgstr "" -#: company/models.py:589 part/models.py:1860 +#: company/models.py:526 part/models.py:1690 msgid "multiple" msgstr "" -#: company/models.py:589 +#: company/models.py:526 msgid "Order multiple" msgstr "" -#: company/models.py:713 +#: company/models.py:649 msgid "last updated" msgstr "" @@ -2864,9 +2867,9 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:658 -#: order/templates/order/sales_order_base.html:116 stock/models.py:650 -#: stock/models.py:651 stock/serializers.py:714 +#: company/templates/company/company_base.html:86 order/models.py:649 +#: order/templates/order/sales_order_base.html:116 stock/models.py:627 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -2946,7 +2949,7 @@ msgstr "" #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:198 #: templates/InvenTree/settings/sidebar.html:47 #: templates/js/translated/search.js:275 templates/navbar.html:50 -#: users/models.py:43 +#: users/models.py:41 msgid "Purchase Orders" msgstr "" @@ -2969,7 +2972,7 @@ msgstr "" #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:218 #: templates/InvenTree/settings/sidebar.html:49 #: templates/js/translated/search.js:299 templates/navbar.html:61 -#: users/models.py:44 +#: users/models.py:42 msgid "Sales Orders" msgstr "" @@ -2996,7 +2999,7 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:47 +#: company/templates/company/manufacturer_part.html:15 company/views.py:45 #: part/templates/part/prices.html:170 templates/InvenTree/search.html:179 #: templates/navbar.html:49 msgid "Manufacturers" @@ -3029,7 +3032,7 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:41 +#: company/templates/company/supplier_part.html:15 company/views.py:39 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 #: templates/InvenTree/search.html:189 templates/navbar.html:48 msgid "Suppliers" @@ -3044,7 +3047,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:183 #: part/templates/part/detail.html:364 part/templates/part/detail.html:394 #: templates/js/translated/forms.js:439 templates/js/translated/helpers.js:32 -#: users/models.py:220 +#: users/models.py:219 msgid "Delete" msgstr "" @@ -3088,7 +3091,7 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:615 +#: company/templates/company/supplier_part.html:24 stock/models.py:592 #: stock/templates/stock/item_base.html:238 #: templates/js/translated/company.js:907 templates/js/translated/order.js:884 #: templates/js/translated/stock.js:1869 @@ -3207,179 +3210,179 @@ msgstr "" #: stock/templates/stock/location.html:173 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223 -#: templates/js/translated/stock.js:2307 users/models.py:41 +#: templates/js/translated/stock.js:2307 users/models.py:39 msgid "Stock Items" msgstr "" -#: company/views.py:42 +#: company/views.py:40 msgid "New Supplier" msgstr "" -#: company/views.py:48 +#: company/views.py:46 msgid "New Manufacturer" msgstr "" -#: company/views.py:53 templates/InvenTree/search.html:209 +#: company/views.py:51 templates/InvenTree/search.html:209 #: templates/navbar.html:60 msgid "Customers" msgstr "" -#: company/views.py:54 +#: company/views.py:52 msgid "New Customer" msgstr "" -#: company/views.py:61 templates/js/translated/search.js:252 +#: company/views.py:59 templates/js/translated/search.js:252 msgid "Companies" msgstr "" -#: company/views.py:62 +#: company/views.py:60 msgid "New Company" msgstr "" -#: company/views.py:121 part/views.py:579 +#: company/views.py:112 part/views.py:578 msgid "Download Image" msgstr "" -#: company/views.py:150 part/views.py:611 +#: company/views.py:139 part/views.py:608 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:157 part/views.py:618 +#: company/views.py:146 part/views.py:615 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:166 part/views.py:627 +#: company/views.py:155 part/views.py:624 msgid "Supplied URL is not a valid image file" msgstr "" -#: label/models.py:105 +#: label/models.py:102 msgid "Label name" msgstr "" -#: label/models.py:112 +#: label/models.py:109 msgid "Label description" msgstr "" -#: label/models.py:119 +#: label/models.py:116 msgid "Label" msgstr "" -#: label/models.py:120 +#: label/models.py:117 msgid "Label template file" msgstr "" -#: label/models.py:126 report/models.py:286 +#: label/models.py:123 report/models.py:253 msgid "Enabled" msgstr "" -#: label/models.py:127 +#: label/models.py:124 msgid "Label template is enabled" msgstr "" -#: label/models.py:132 +#: label/models.py:129 msgid "Width [mm]" msgstr "" -#: label/models.py:133 +#: label/models.py:130 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:139 +#: label/models.py:136 msgid "Height [mm]" msgstr "" -#: label/models.py:140 +#: label/models.py:137 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:146 report/models.py:279 +#: label/models.py:143 report/models.py:246 msgid "Filename Pattern" msgstr "" -#: label/models.py:147 +#: label/models.py:144 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:250 +#: label/models.py:233 msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" -#: label/models.py:251 label/models.py:295 label/models.py:327 -#: report/models.py:310 report/models.py:447 report/models.py:486 +#: label/models.py:234 label/models.py:274 label/models.py:302 +#: report/models.py:279 report/models.py:410 report/models.py:449 msgid "Filters" msgstr "" -#: label/models.py:294 +#: label/models.py:273 msgid "Query filters (comma-separated list of key=value pairs" msgstr "" -#: label/models.py:326 +#: label/models.py:301 msgid "Part query filters (comma-separated value of key=value pairs)" msgstr "" -#: order/models.py:137 +#: order/models.py:133 msgid "Order description" msgstr "" -#: order/models.py:139 order/models.py:1274 +#: order/models.py:135 order/models.py:1236 msgid "Link to external page" msgstr "" -#: order/models.py:147 +#: order/models.py:143 msgid "Created By" msgstr "" -#: order/models.py:154 +#: order/models.py:150 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:159 +#: order/models.py:155 msgid "Order notes" msgstr "" -#: order/models.py:296 order/models.py:648 +#: order/models.py:289 order/models.py:639 msgid "Order reference" msgstr "" -#: order/models.py:301 order/models.py:663 +#: order/models.py:294 order/models.py:654 msgid "Purchase order status" msgstr "" -#: order/models.py:311 +#: order/models.py:304 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:314 order/templates/order/order_base.html:124 +#: order/models.py:307 order/templates/order/order_base.html:124 #: templates/js/translated/order.js:1652 msgid "Supplier Reference" msgstr "" -#: order/models.py:314 +#: order/models.py:307 msgid "Supplier order reference code" msgstr "" -#: order/models.py:321 +#: order/models.py:314 msgid "received by" msgstr "" -#: order/models.py:326 +#: order/models.py:319 msgid "Issue Date" msgstr "" -#: order/models.py:327 +#: order/models.py:320 msgid "Date order was issued" msgstr "" -#: order/models.py:332 +#: order/models.py:325 msgid "Target Delivery Date" msgstr "" -#: order/models.py:333 +#: order/models.py:326 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:339 +#: order/models.py:332 msgid "Date order was completed" msgstr "" @@ -3387,94 +3390,94 @@ msgstr "" msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:514 +#: order/models.py:512 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:659 +#: order/models.py:650 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:665 +#: order/models.py:656 msgid "Customer Reference " msgstr "" -#: order/models.py:665 +#: order/models.py:656 msgid "Customer order reference code" msgstr "" -#: order/models.py:670 +#: order/models.py:661 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:673 order/models.py:1228 +#: order/models.py:664 order/models.py:1190 #: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656 msgid "Shipment Date" msgstr "" -#: order/models.py:680 +#: order/models.py:671 msgid "shipped by" msgstr "" -#: order/models.py:746 +#: order/models.py:726 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:750 +#: order/models.py:730 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:753 +#: order/models.py:733 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:756 +#: order/models.py:736 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:936 +#: order/models.py:910 msgid "Item quantity" msgstr "" -#: order/models.py:942 +#: order/models.py:916 msgid "Line item reference" msgstr "" -#: order/models.py:944 +#: order/models.py:918 msgid "Line item notes" msgstr "" -#: order/models.py:949 +#: order/models.py:923 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:967 +#: order/models.py:941 msgid "Context" msgstr "" -#: order/models.py:968 +#: order/models.py:942 msgid "Additional context for this line" msgstr "" -#: order/models.py:976 +#: order/models.py:950 msgid "Unit price" msgstr "" -#: order/models.py:1009 +#: order/models.py:980 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1016 +#: order/models.py:988 msgid "deleted" msgstr "" -#: order/models.py:1022 order/models.py:1104 order/models.py:1126 -#: order/models.py:1222 order/models.py:1357 +#: order/models.py:994 order/models.py:1074 order/models.py:1099 +#: order/models.py:1184 order/models.py:1320 #: templates/js/translated/order.js:3112 msgid "Order" msgstr "" -#: order/models.py:1023 order/models.py:1104 +#: order/models.py:995 order/models.py:1074 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:76 @@ -3485,182 +3488,182 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/models.py:1042 +#: order/models.py:1013 msgid "Supplier part" msgstr "" -#: order/models.py:1049 order/templates/order/order_base.html:169 +#: order/models.py:1020 order/templates/order/order_base.html:169 #: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009 #: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 #: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:1050 +#: order/models.py:1021 msgid "Number of items received" msgstr "" -#: order/models.py:1057 part/templates/part/prices.html:179 stock/models.py:745 -#: stock/serializers.py:159 stock/templates/stock/item_base.html:191 +#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722 +#: stock/serializers.py:153 stock/templates/stock/item_base.html:191 #: templates/js/translated/stock.js:1900 msgid "Purchase Price" msgstr "" -#: order/models.py:1058 +#: order/models.py:1029 msgid "Unit purchase price" msgstr "" -#: order/models.py:1066 +#: order/models.py:1037 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1136 part/templates/part/part_pricing.html:112 +#: order/models.py:1109 part/templates/part/part_pricing.html:112 #: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:1137 +#: order/models.py:1110 msgid "Unit sale price" msgstr "" -#: order/models.py:1142 +#: order/models.py:1115 msgid "Shipped quantity" msgstr "" -#: order/models.py:1229 +#: order/models.py:1191 msgid "Date of shipment" msgstr "" -#: order/models.py:1236 +#: order/models.py:1198 msgid "Checked By" msgstr "" -#: order/models.py:1237 +#: order/models.py:1199 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1245 +#: order/models.py:1207 msgid "Shipment number" msgstr "" -#: order/models.py:1252 +#: order/models.py:1214 msgid "Shipment notes" msgstr "" -#: order/models.py:1259 +#: order/models.py:1221 msgid "Tracking Number" msgstr "" -#: order/models.py:1260 +#: order/models.py:1222 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1267 +#: order/models.py:1229 msgid "Invoice Number" msgstr "" -#: order/models.py:1268 +#: order/models.py:1230 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1285 +#: order/models.py:1248 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1288 +#: order/models.py:1251 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1395 order/models.py:1397 +#: order/models.py:1354 order/models.py:1356 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1401 +#: order/models.py:1360 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1403 +#: order/models.py:1362 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1406 +#: order/models.py:1365 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1410 +#: order/models.py:1369 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1416 order/serializers.py:1008 +#: order/models.py:1375 order/serializers.py:1045 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1419 +#: order/models.py:1378 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1420 +#: order/models.py:1379 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1428 +#: order/models.py:1387 msgid "Line" msgstr "" -#: order/models.py:1436 order/serializers.py:1118 order/serializers.py:1246 +#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273 #: templates/js/translated/model_renderers.js:301 msgid "Shipment" msgstr "" -#: order/models.py:1437 +#: order/models.py:1396 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1449 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1450 +#: order/models.py:1409 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1453 +#: order/models.py:1412 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:69 +#: order/serializers.py:68 msgid "Price currency" msgstr "" -#: order/serializers.py:198 +#: order/serializers.py:192 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:296 +#: order/serializers.py:287 msgid "Order is not open" msgstr "" -#: order/serializers.py:320 +#: order/serializers.py:311 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:334 +#: order/serializers.py:330 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:339 +#: order/serializers.py:335 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:345 +#: order/serializers.py:341 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:346 +#: order/serializers.py:342 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:406 order/serializers.py:1083 +#: order/serializers.py:406 order/serializers.py:1117 msgid "Line Item" msgstr "" @@ -3668,7 +3671,7 @@ msgstr "" msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:422 order/serializers.py:527 +#: order/serializers.py:422 order/serializers.py:526 msgid "Select destination location for received items" msgstr "" @@ -3688,59 +3691,59 @@ msgstr "" msgid "Unique identifier field" msgstr "" -#: order/serializers.py:480 +#: order/serializers.py:477 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:500 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:539 +#: order/serializers.py:542 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:559 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:567 +#: order/serializers.py:570 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:842 +#: order/serializers.py:866 msgid "Sale price currency" msgstr "" -#: order/serializers.py:917 +#: order/serializers.py:947 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:973 order/serializers.py:1095 +#: order/serializers.py:1006 order/serializers.py:1126 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:995 +#: order/serializers.py:1028 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1108 +#: order/serializers.py:1139 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1132 order/serializers.py:1257 +#: order/serializers.py:1161 order/serializers.py:1281 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1135 order/serializers.py:1260 +#: order/serializers.py:1164 order/serializers.py:1284 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1187 +#: order/serializers.py:1214 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1197 +#: order/serializers.py:1224 msgid "The following serial numbers are already allocated" msgstr "" @@ -3988,7 +3991,8 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:70 -#: templates/js/translated/bom.js:1053 templates/js/translated/build.js:1880 +#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053 +#: templates/js/translated/build.js:1880 msgid "Actions" msgstr "" @@ -3996,201 +4000,202 @@ msgstr "" msgid "New Shipment" msgstr "" -#: order/views.py:117 +#: order/views.py:104 msgid "Match Supplier Parts" msgstr "" -#: order/views.py:390 +#: order/views.py:377 msgid "Sales order not found" msgstr "" -#: order/views.py:396 +#: order/views.py:383 msgid "Price not found" msgstr "" -#: order/views.py:399 +#: order/views.py:386 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:404 +#: order/views.py:391 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:504 +#: part/api.py:474 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:524 +#: part/api.py:494 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:542 +#: part/api.py:512 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:574 +#: part/api.py:544 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:665 +#: part/api.py:630 msgid "Valid" msgstr "" -#: part/api.py:666 +#: part/api.py:631 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:671 +#: part/api.py:637 msgid "This option must be selected" msgstr "" -#: part/api.py:1043 +#: part/api.py:1003 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1047 +#: part/api.py:1007 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1062 +#: part/api.py:1022 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1093 part/api.py:1097 part/api.py:1112 part/api.py:1116 +#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:99 part/models.py:874 +#: part/bom.py:127 part/models.py:98 part/models.py:814 #: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" -#: part/bom.py:126 templates/email/low_stock_notification.html:17 +#: part/bom.py:128 templates/email/low_stock_notification.html:17 msgid "Total Stock" msgstr "" -#: part/bom.py:127 part/templates/part/part_base.html:189 +#: part/bom.py:129 part/templates/part/part_base.html:189 +#: templates/js/translated/order.js:3543 msgid "Available Stock" msgstr "" -#: part/bom.py:128 part/templates/part/part_base.html:207 +#: part/bom.py:130 part/templates/part/part_base.html:207 #: templates/js/translated/part.js:517 templates/js/translated/part.js:537 #: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 #: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" -#: part/forms.py:79 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:98 +#: part/forms.py:67 msgid "Add parameter template to same level categories" msgstr "" -#: part/forms.py:102 +#: part/forms.py:71 msgid "Add parameter template to all categories" msgstr "" -#: part/forms.py:122 +#: part/forms.py:92 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:100 +#: part/models.py:99 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:103 +#: part/models.py:102 msgid "Default keywords" msgstr "" -#: part/models.py:103 +#: part/models.py:102 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:113 part/models.py:2625 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:114 part/templates/part/category.html:128 +#: part/models.py:116 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:198 -#: users/models.py:38 +#: users/models.py:36 msgid "Part Categories" msgstr "" -#: part/models.py:355 part/templates/part/cat_link.html:3 +#: part/models.py:337 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 #: templates/js/translated/part.js:1768 templates/js/translated/search.js:144 -#: templates/navbar.html:24 users/models.py:39 +#: templates/navbar.html:24 users/models.py:37 msgid "Parts" msgstr "" -#: part/models.py:447 +#: part/models.py:422 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:522 part/models.py:534 +#: part/models.py:492 part/models.py:504 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:664 +#: part/models.py:621 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:668 +#: part/models.py:625 msgid "Next available serial number is" msgstr "" -#: part/models.py:673 +#: part/models.py:630 msgid "Most recent serial number is" msgstr "" -#: part/models.py:769 +#: part/models.py:711 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:798 part/models.py:2678 +#: part/models.py:738 part/models.py:2467 msgid "Part name" msgstr "" -#: part/models.py:805 +#: part/models.py:745 msgid "Is Template" msgstr "" -#: part/models.py:806 +#: part/models.py:746 msgid "Is this part a template part?" msgstr "" -#: part/models.py:816 +#: part/models.py:756 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:817 +#: part/models.py:757 msgid "Variant Of" msgstr "" -#: part/models.py:823 +#: part/models.py:763 msgid "Part description" msgstr "" -#: part/models.py:828 part/templates/part/category.html:86 +#: part/models.py:768 part/templates/part/category.html:86 #: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:829 +#: part/models.py:769 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:836 part/models.py:2375 part/models.py:2624 +#: part/models.py:776 part/models.py:2171 part/models.py:2412 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4199,432 +4204,432 @@ msgstr "" msgid "Category" msgstr "" -#: part/models.py:837 +#: part/models.py:777 msgid "Part category" msgstr "" -#: part/models.py:842 part/templates/part/part_base.html:266 +#: part/models.py:782 part/templates/part/part_base.html:266 #: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 #: templates/js/translated/stock.js:1659 msgid "IPN" msgstr "" -#: part/models.py:843 +#: part/models.py:783 msgid "Internal Part Number" msgstr "" -#: part/models.py:849 +#: part/models.py:789 msgid "Part revision or version number" msgstr "" -#: part/models.py:850 part/templates/part/part_base.html:273 -#: report/models.py:188 templates/js/translated/part.js:670 +#: part/models.py:790 part/templates/part/part_base.html:273 +#: report/models.py:170 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:872 +#: part/models.py:812 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:919 part/templates/part/part_base.html:339 +#: part/models.py:857 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:920 +#: part/models.py:858 msgid "Default supplier part" msgstr "" -#: part/models.py:927 +#: part/models.py:865 msgid "Default Expiry" msgstr "" -#: part/models.py:928 +#: part/models.py:866 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:933 part/templates/part/part_base.html:200 +#: part/models.py:871 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:934 +#: part/models.py:872 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:941 +#: part/models.py:879 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:947 +#: part/models.py:885 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:953 +#: part/models.py:891 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:959 +#: part/models.py:897 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:964 +#: part/models.py:902 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:969 +#: part/models.py:907 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:974 +#: part/models.py:912 msgid "Is this part active?" msgstr "" -#: part/models.py:979 +#: part/models.py:917 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:984 +#: part/models.py:922 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:987 +#: part/models.py:925 msgid "BOM checksum" msgstr "" -#: part/models.py:987 +#: part/models.py:925 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:990 +#: part/models.py:928 msgid "BOM checked by" msgstr "" -#: part/models.py:992 +#: part/models.py:930 msgid "BOM checked date" msgstr "" -#: part/models.py:996 +#: part/models.py:934 msgid "Creation User" msgstr "" -#: part/models.py:1860 +#: part/models.py:1690 msgid "Sell multiple" msgstr "" -#: part/models.py:2425 +#: part/models.py:2218 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2442 +#: part/models.py:2235 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1819 +#: part/models.py:2255 templates/js/translated/part.js:1819 #: templates/js/translated/stock.js:1274 msgid "Test Name" msgstr "" -#: part/models.py:2463 +#: part/models.py:2256 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2468 +#: part/models.py:2261 msgid "Test Description" msgstr "" -#: part/models.py:2469 +#: part/models.py:2262 msgid "Enter description for this test" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1828 +#: part/models.py:2267 templates/js/translated/part.js:1828 #: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2475 +#: part/models.py:2268 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2480 templates/js/translated/part.js:1836 +#: part/models.py:2273 templates/js/translated/part.js:1836 msgid "Requires Value" msgstr "" -#: part/models.py:2481 +#: part/models.py:2274 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2486 templates/js/translated/part.js:1843 +#: part/models.py:2279 templates/js/translated/part.js:1843 msgid "Requires Attachment" msgstr "" -#: part/models.py:2487 +#: part/models.py:2280 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2498 +#: part/models.py:2288 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2534 +#: part/models.py:2324 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2542 +#: part/models.py:2332 msgid "Parameter Name" msgstr "" -#: part/models.py:2549 +#: part/models.py:2339 msgid "Parameter Units" msgstr "" -#: part/models.py:2579 +#: part/models.py:2370 msgid "Parent Part" msgstr "" -#: part/models.py:2581 part/models.py:2630 part/models.py:2631 +#: part/models.py:2372 part/models.py:2418 part/models.py:2419 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" -#: part/models.py:2583 +#: part/models.py:2374 msgid "Data" msgstr "" -#: part/models.py:2583 +#: part/models.py:2374 msgid "Parameter Value" msgstr "" -#: part/models.py:2635 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2636 +#: part/models.py:2424 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2670 +#: part/models.py:2459 msgid "Part ID or part name" msgstr "" -#: part/models.py:2673 templates/js/translated/model_renderers.js:200 +#: part/models.py:2462 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2674 +#: part/models.py:2463 msgid "Unique part ID value" msgstr "" -#: part/models.py:2677 +#: part/models.py:2466 msgid "Part Name" msgstr "" -#: part/models.py:2681 +#: part/models.py:2470 msgid "Part IPN" msgstr "" -#: part/models.py:2682 +#: part/models.py:2471 msgid "Part IPN value" msgstr "" -#: part/models.py:2685 +#: part/models.py:2474 msgid "Level" msgstr "" -#: part/models.py:2686 +#: part/models.py:2475 msgid "BOM level" msgstr "" -#: part/models.py:2761 +#: part/models.py:2544 msgid "Select parent part" msgstr "" -#: part/models.py:2769 +#: part/models.py:2552 msgid "Sub part" msgstr "" -#: part/models.py:2770 +#: part/models.py:2553 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2776 +#: part/models.py:2559 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2778 part/templates/part/upload_bom.html:58 +#: part/models.py:2561 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2778 +#: part/models.py:2561 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2781 part/templates/part/upload_bom.html:55 +#: part/models.py:2564 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2782 +#: part/models.py:2565 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2785 +#: part/models.py:2568 msgid "BOM item reference" msgstr "" -#: part/models.py:2788 +#: part/models.py:2571 msgid "BOM item notes" msgstr "" -#: part/models.py:2790 +#: part/models.py:2573 msgid "Checksum" msgstr "" -#: part/models.py:2790 +#: part/models.py:2573 msgid "BOM line checksum" msgstr "" -#: part/models.py:2794 part/templates/part/upload_bom.html:57 +#: part/models.py:2577 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2795 +#: part/models.py:2578 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2800 part/templates/part/upload_bom.html:56 +#: part/models.py:2583 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2801 +#: part/models.py:2584 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2886 stock/models.py:486 +#: part/models.py:2662 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2895 part/models.py:2897 +#: part/models.py:2671 part/models.py:2673 msgid "Sub part must be specified" msgstr "" -#: part/models.py:3006 +#: part/models.py:2778 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3028 +#: part/models.py:2799 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3040 +#: part/models.py:2812 msgid "Parent BOM item" msgstr "" -#: part/models.py:3048 +#: part/models.py:2820 msgid "Substitute part" msgstr "" -#: part/models.py:3059 +#: part/models.py:2831 msgid "Part 1" msgstr "" -#: part/models.py:3063 +#: part/models.py:2835 msgid "Part 2" msgstr "" -#: part/models.py:3063 +#: part/models.py:2835 msgid "Select Related Part" msgstr "" -#: part/models.py:3095 +#: part/models.py:2866 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:152 part/serializers.py:184 stock/serializers.py:169 +#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:918 +#: part/serializers.py:794 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:929 +#: part/serializers.py:802 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:930 +#: part/serializers.py:803 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:935 +#: part/serializers.py:808 msgid "Include Inherited" msgstr "" -#: part/serializers.py:936 +#: part/serializers.py:809 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:941 +#: part/serializers.py:814 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:942 +#: part/serializers.py:815 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:947 +#: part/serializers.py:820 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:948 +#: part/serializers.py:821 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:992 +#: part/serializers.py:861 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:993 +#: part/serializers.py:862 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1020 +#: part/serializers.py:892 msgid "No part column specified" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:935 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1066 +#: part/serializers.py:938 msgid "No matching part found" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:941 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:950 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1086 +#: part/serializers.py:958 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1105 +#: part/serializers.py:979 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:14 +#: part/tasks.py:21 msgid "Low stock notification" msgstr "" -#: part/tasks.py:15 +#: part/tasks.py:22 #, python-brace-format msgid "The available stock for {part.name} has fallen below the configured minimum level" msgstr "" @@ -4826,7 +4831,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4902,7 +4907,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5109,7 +5114,7 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:3543 +#: part/templates/part/part_base.html:194 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" @@ -5403,16 +5408,16 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:186 +#: part/templatetags/inventree_extras.py:158 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:223 +#: part/templatetags/inventree_extras.py:193 #, python-brace-format msgid "{title} v{version}" msgstr "" -#: part/views.py:74 +#: part/views.py:76 msgid "Set Part Category" msgstr "" @@ -5421,87 +5426,75 @@ msgstr "" msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:195 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:496 msgid "None" msgstr "" -#: part/views.py:556 +#: part/views.py:558 msgid "Part QR Code" msgstr "" -#: part/views.py:658 +#: part/views.py:652 msgid "Select Part Image" msgstr "" -#: part/views.py:684 +#: part/views.py:678 msgid "Updated part image" msgstr "" -#: part/views.py:687 +#: part/views.py:681 msgid "Part image not found" msgstr "" -#: part/views.py:775 +#: part/views.py:770 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:782 +#: part/views.py:778 msgid "Part was deleted" msgstr "" -#: part/views.py:791 +#: part/views.py:787 msgid "Part Pricing" msgstr "" -#: part/views.py:940 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:950 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:957 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:999 +#: part/views.py:978 msgid "Delete Part Category" msgstr "" -#: part/views.py:1005 +#: part/views.py:985 msgid "Part category was deleted" msgstr "" -#: part/views.py:1014 +#: part/views.py:994 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1115 +#: part/views.py:1094 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1171 +#: part/views.py:1155 msgid "Delete Category Parameter Template" msgstr "" -#: plugin/apps.py:48 +#: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" -#: plugin/base/action/api.py:28 +#: plugin/base/action/api.py:27 msgid "No action specified" msgstr "" -#: plugin/base/action/api.py:39 +#: plugin/base/action/api.py:38 msgid "No matching action found" msgstr "" -#: plugin/base/barcodes/api.py:52 plugin/base/barcodes/api.py:152 +#: plugin/base/barcodes/api.py:52 plugin/base/barcodes/api.py:154 msgid "Must provide barcode_data parameter" msgstr "" @@ -5513,31 +5506,31 @@ msgstr "" msgid "Match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:155 +#: plugin/base/barcodes/api.py:157 msgid "Must provide stockitem parameter" msgstr "" -#: plugin/base/barcodes/api.py:162 +#: plugin/base/barcodes/api.py:164 msgid "No matching stock item found" msgstr "" -#: plugin/base/barcodes/api.py:192 +#: plugin/base/barcodes/api.py:194 msgid "Barcode already matches Stock Item" msgstr "" -#: plugin/base/barcodes/api.py:196 +#: plugin/base/barcodes/api.py:198 msgid "Barcode already matches Stock Location" msgstr "" -#: plugin/base/barcodes/api.py:200 +#: plugin/base/barcodes/api.py:202 msgid "Barcode already matches Part" msgstr "" -#: plugin/base/barcodes/api.py:206 plugin/base/barcodes/api.py:218 +#: plugin/base/barcodes/api.py:208 plugin/base/barcodes/api.py:220 msgid "Barcode hash already matches Stock Item" msgstr "" -#: plugin/base/barcodes/api.py:224 +#: plugin/base/barcodes/api.py:226 msgid "Barcode associated with Stock Item" msgstr "" @@ -5545,226 +5538,226 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/builtin/integration/core_notifications.py:24 +#: plugin/builtin/integration/core_notifications.py:28 msgid "InvenTree contributors" msgstr "" -#: plugin/builtin/integration/core_notifications.py:25 +#: plugin/builtin/integration/core_notifications.py:29 msgid "Integrated outgoing notificaton methods" msgstr "" -#: plugin/builtin/integration/core_notifications.py:29 -#: plugin/builtin/integration/core_notifications.py:46 +#: plugin/builtin/integration/core_notifications.py:33 +#: plugin/builtin/integration/core_notifications.py:52 msgid "Enable email notifications" msgstr "" -#: plugin/builtin/integration/core_notifications.py:30 -#: plugin/builtin/integration/core_notifications.py:47 +#: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/core_notifications.py:53 msgid "Allow sending of emails for event notifications" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:32 msgid "Plugin Metadata" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:33 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: plugin/models.py:85 +#: plugin/models.py:79 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:86 +#: plugin/models.py:80 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:91 +#: plugin/models.py:85 msgid "Key" msgstr "" -#: plugin/models.py:92 +#: plugin/models.py:86 msgid "Key of plugin" msgstr "" -#: plugin/models.py:100 +#: plugin/models.py:94 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:106 +#: plugin/models.py:100 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:179 +#: plugin/models.py:168 msgid "Plugin" msgstr "" -#: plugin/models.py:253 +#: plugin/models.py:231 msgid "Method" msgstr "" -#: plugin/plugin.py:246 +#: plugin/plugin.py:214 msgid "No author found" msgstr "" -#: plugin/plugin.py:260 +#: plugin/plugin.py:226 msgid "No date found" msgstr "" -#: plugin/samples/integration/sample.py:42 +#: plugin/samples/integration/sample.py:39 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:43 +#: plugin/samples/integration/sample.py:40 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:48 +#: plugin/samples/integration/sample.py:45 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:46 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:52 +#: plugin/samples/integration/sample.py:49 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:53 +#: plugin/samples/integration/sample.py:50 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:58 +#: plugin/samples/integration/sample.py:55 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:59 +#: plugin/samples/integration/sample.py:56 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:74 +#: plugin/serializers.py:73 msgid "Source URL" msgstr "" -#: plugin/serializers.py:75 +#: plugin/serializers.py:74 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:80 +#: plugin/serializers.py:79 msgid "Package Name" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:80 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:84 +#: plugin/serializers.py:83 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:85 +#: plugin/serializers.py:84 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:104 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:102 +#: plugin/serializers.py:106 msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:191 +#: report/api.py:166 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:223 report/api.py:270 +#: report/api.py:198 report/api.py:239 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:170 +#: report/models.py:152 msgid "Template name" msgstr "" -#: report/models.py:176 +#: report/models.py:158 msgid "Report template file" msgstr "" -#: report/models.py:183 +#: report/models.py:165 msgid "Report template description" msgstr "" -#: report/models.py:189 +#: report/models.py:171 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:280 +#: report/models.py:247 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:287 +#: report/models.py:254 msgid "Report template is enabled" msgstr "" -#: report/models.py:311 +#: report/models.py:280 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:319 +#: report/models.py:288 msgid "Include Installed Tests" msgstr "" -#: report/models.py:320 +#: report/models.py:289 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:370 +#: report/models.py:336 msgid "Build Filters" msgstr "" -#: report/models.py:371 +#: report/models.py:337 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:413 +#: report/models.py:376 msgid "Part Filters" msgstr "" -#: report/models.py:414 +#: report/models.py:377 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:448 +#: report/models.py:411 msgid "Purchase order query filters" msgstr "" -#: report/models.py:487 +#: report/models.py:450 msgid "Sales order query filters" msgstr "" -#: report/models.py:542 +#: report/models.py:504 msgid "Snippet" msgstr "" -#: report/models.py:543 +#: report/models.py:505 msgid "Report snippet file" msgstr "" -#: report/models.py:547 +#: report/models.py:509 msgid "Snippet file description" msgstr "" -#: report/models.py:582 +#: report/models.py:546 msgid "Asset" msgstr "" -#: report/models.py:583 +#: report/models.py:547 msgid "Report asset file" msgstr "" -#: report/models.py:586 +#: report/models.py:550 msgid "Asset file description" msgstr "" @@ -5781,7 +5774,7 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:655 stock/templates/stock/item_base.html:322 +#: stock/models.py:632 stock/templates/stock/item_base.html:322 #: templates/js/translated/build.js:420 templates/js/translated/build.js:572 #: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671 #: templates/js/translated/model_renderers.js:106 @@ -5795,12 +5788,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2183 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2189 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5830,362 +5823,366 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:542 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:549 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:574 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:82 stock/models.py:750 +#: stock/models.py:83 stock/models.py:727 #: stock/templates/stock/item_base.html:252 msgid "Owner" msgstr "" -#: stock/models.py:83 stock/models.py:751 +#: stock/models.py:84 stock/models.py:728 msgid "Select Owner" msgstr "" -#: stock/models.py:459 +#: stock/models.py:435 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:503 +#: stock/models.py:477 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:513 stock/models.py:522 +#: stock/models.py:487 stock/models.py:496 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:514 +#: stock/models.py:488 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:536 +#: stock/models.py:510 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:542 +#: stock/models.py:516 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:556 +#: stock/models.py:530 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:599 +#: stock/models.py:576 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:608 +#: stock/models.py:585 msgid "Base part" msgstr "" -#: stock/models.py:616 +#: stock/models.py:593 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:622 stock/templates/stock/location.html:17 +#: stock/models.py:599 stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:625 +#: stock/models.py:602 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:632 +#: stock/models.py:609 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:638 stock/templates/stock/item_base.html:361 +#: stock/models.py:615 stock/templates/stock/item_base.html:361 msgid "Installed In" msgstr "" -#: stock/models.py:641 +#: stock/models.py:618 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:657 +#: stock/models.py:634 msgid "Serial number for this item" msgstr "" -#: stock/models.py:671 +#: stock/models.py:648 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:676 +#: stock/models.py:653 msgid "Stock Quantity" msgstr "" -#: stock/models.py:685 +#: stock/models.py:662 msgid "Source Build" msgstr "" -#: stock/models.py:687 +#: stock/models.py:664 msgid "Build for this stock item" msgstr "" -#: stock/models.py:698 +#: stock/models.py:675 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:701 +#: stock/models.py:678 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:707 +#: stock/models.py:684 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:713 stock/templates/stock/item_base.html:429 +#: stock/models.py:690 stock/templates/stock/item_base.html:429 #: templates/js/translated/stock.js:1816 msgid "Expiry Date" msgstr "" -#: stock/models.py:714 +#: stock/models.py:691 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:727 +#: stock/models.py:704 msgid "Delete on deplete" msgstr "" -#: stock/models.py:727 +#: stock/models.py:704 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:737 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:746 +#: stock/models.py:723 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:778 +#: stock/models.py:751 msgid "Converted to part" msgstr "" -#: stock/models.py:1298 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1304 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1310 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1313 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1316 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1394 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1397 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1400 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1403 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1406 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1409 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1416 stock/serializers.py:863 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1420 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1424 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1428 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1600 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2103 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2160 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2166 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2184 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2190 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2196 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2203 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2209 +#: stock/models.py:2094 msgid "Test notes" msgstr "" -#: stock/serializers.py:162 +#: stock/serializers.py:156 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:283 +#: stock/serializers.py:280 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:298 +#: stock/serializers.py:292 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:304 +#: stock/serializers.py:298 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:315 stock/serializers.py:820 stock/serializers.py:1061 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:322 +#: stock/serializers.py:316 msgid "Optional note field" msgstr "" -#: stock/serializers.py:335 +#: stock/serializers.py:326 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:352 +#: stock/serializers.py:343 msgid "Serial numbers already exist" msgstr "" -#: stock/serializers.py:394 +#: stock/serializers.py:383 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:410 +#: stock/serializers.py:396 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:417 +#: stock/serializers.py:403 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:440 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:460 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:677 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:681 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:685 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:715 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:721 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:729 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:739 stock/serializers.py:969 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:827 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:833 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:838 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:839 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:931 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:959 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6193,44 +6190,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6433,6 +6426,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6502,7 +6499,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:156 templates/InvenTree/search.html:165 -#: templates/js/translated/search.js:238 users/models.py:40 +#: templates/js/translated/search.js:238 users/models.py:38 msgid "Stock Locations" msgstr "" @@ -6554,7 +6551,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:227 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6575,62 +6572,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:125 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:144 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:153 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:164 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:175 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:192 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:193 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:208 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:264 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:277 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:288 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:295 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:304 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6901,7 +6870,7 @@ msgid "Install Plugin" msgstr "" #: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 -#: users/models.py:37 +#: users/models.py:35 msgid "Admin" msgstr "" @@ -7049,6 +7018,22 @@ msgstr "" msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:355 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:373 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:387 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:395 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -7589,6 +7574,14 @@ msgstr "" msgid "Add Attachment" msgstr "" +#: templates/attachment_table.html:11 +msgid "Delete selected attachments" +msgstr "" + +#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110 +msgid "Delete Attachments" +msgstr "" + #: templates/base.html:101 msgid "Server Restart Required" msgstr "" @@ -7725,31 +7718,27 @@ msgstr "" msgid "Error code" msgstr "" -#: templates/js/translated/attachment.js:78 +#: templates/js/translated/attachment.js:96 +msgid "All selected attachments will be deleted" +msgstr "" + +#: templates/js/translated/attachment.js:156 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:100 +#: templates/js/translated/attachment.js:180 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:110 -msgid "Confirm Delete" -msgstr "" - -#: templates/js/translated/attachment.js:111 -msgid "Delete Attachment" -msgstr "" - -#: templates/js/translated/attachment.js:167 +#: templates/js/translated/attachment.js:246 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:183 +#: templates/js/translated/attachment.js:262 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:190 +#: templates/js/translated/attachment.js:269 msgid "Delete attachment" msgstr "" @@ -7966,6 +7955,7 @@ msgid "Variant stock allowed" msgstr "" #: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814 +#: templates/js/translated/order.js:3562 msgid "No Stock Available" msgstr "" @@ -8194,20 +8184,20 @@ msgstr "" msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1808 +#: templates/js/translated/build.js:1808 templates/js/translated/order.js:3568 msgid "Insufficient stock available" msgstr "" -#: templates/js/translated/build.js:1810 +#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3566 msgid "Sufficient stock available" msgstr "" #: templates/js/translated/build.js:1839 templates/js/translated/build.js:2084 -#: templates/js/translated/build.js:2657 templates/js/translated/order.js:3553 +#: templates/js/translated/build.js:2657 templates/js/translated/order.js:3579 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1887 templates/js/translated/order.js:3633 +#: templates/js/translated/build.js:1887 templates/js/translated/order.js:3659 msgid "Build stock" msgstr "" @@ -8215,7 +8205,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1894 templates/js/translated/order.js:3626 +#: templates/js/translated/build.js:1894 templates/js/translated/order.js:3652 msgid "Allocate stock" msgstr "" @@ -8867,15 +8857,15 @@ msgstr "" msgid "Items" msgstr "" -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3685 +#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3711 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3707 +#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3733 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3718 +#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3744 msgid "Delete Line Item" msgstr "" @@ -8888,13 +8878,13 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139 -#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3952 +#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978 #: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301 msgid "Unit Price" msgstr "" #: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155 -#: templates/js/translated/order.js:3483 templates/js/translated/order.js:3968 +#: templates/js/translated/order.js:3483 templates/js/translated/order.js:3994 msgid "Total Price" msgstr "" @@ -8907,39 +8897,39 @@ msgstr "" msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3639 +#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3665 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3640 +#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3666 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3644 +#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3670 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4017 +#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4043 msgid "Duplicate line" msgstr "" -#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4018 +#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4044 msgid "Edit line" msgstr "" -#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4019 +#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4045 msgid "Delete line" msgstr "" -#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4049 +#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4075 msgid "Duplicate Line" msgstr "" -#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4070 +#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4096 msgid "Edit Line" msgstr "" -#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4081 +#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4107 msgid "Delete Line" msgstr "" @@ -9032,39 +9022,39 @@ msgstr "" msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:3623 +#: templates/js/translated/order.js:3649 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:3629 +#: templates/js/translated/order.js:3655 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:3636 templates/js/translated/order.js:3834 +#: templates/js/translated/order.js:3662 templates/js/translated/order.js:3860 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:3648 +#: templates/js/translated/order.js:3674 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:3651 +#: templates/js/translated/order.js:3677 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:3733 +#: templates/js/translated/order.js:3759 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:3842 +#: templates/js/translated/order.js:3868 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:3856 +#: templates/js/translated/order.js:3882 msgid "No matching line items" msgstr "" -#: templates/js/translated/order.js:4092 +#: templates/js/translated/order.js:4118 msgid "No matching lines" msgstr "" @@ -9536,7 +9526,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:887 users/models.py:216 +#: templates/js/translated/stock.js:887 users/models.py:215 msgid "Add" msgstr "" @@ -10271,50 +10261,50 @@ msgstr "" msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:184 +#: users/admin.py:191 msgid "The following users are members of multiple groups:" msgstr "" -#: users/admin.py:207 +#: users/admin.py:214 msgid "Personal info" msgstr "" -#: users/admin.py:208 +#: users/admin.py:215 msgid "Permissions" msgstr "" -#: users/admin.py:211 +#: users/admin.py:218 msgid "Important dates" msgstr "" -#: users/models.py:203 +#: users/models.py:202 msgid "Permission set" msgstr "" -#: users/models.py:211 +#: users/models.py:210 msgid "Group" msgstr "" -#: users/models.py:214 +#: users/models.py:213 msgid "View" msgstr "" -#: users/models.py:214 +#: users/models.py:213 msgid "Permission to view items" msgstr "" -#: users/models.py:216 +#: users/models.py:215 msgid "Permission to add items" msgstr "" -#: users/models.py:218 +#: users/models.py:217 msgid "Change" msgstr "" -#: users/models.py:218 +#: users/models.py:217 msgid "Permissions to edit items" msgstr "" -#: users/models.py:220 +#: users/models.py:219 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/fa/LC_MESSAGES/django.po b/InvenTree/locale/fa/LC_MESSAGES/django.po index 85753b794b..4d854e017f 100644 --- a/InvenTree/locale/fa/LC_MESSAGES/django.po +++ b/InvenTree/locale/fa/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:42\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Persian\n" "Language: fa_IR\n" @@ -124,7 +124,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "" msgid "parent" msgstr "" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2551,12 +2552,12 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "" @@ -2713,7 +2714,7 @@ msgstr "" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "" msgid "On Order" msgstr "" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -4160,7 +4153,7 @@ msgstr "" msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "" @@ -4193,7 +4186,7 @@ msgstr "" msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" @@ -4397,153 +4390,153 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5414,83 +5407,59 @@ msgstr "" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po index fdfffa1ded..a542ca17c1 100644 --- a/InvenTree/locale/fr/LC_MESSAGES/django.po +++ b/InvenTree/locale/fr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:42\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -124,7 +124,7 @@ msgstr "Fichier manquant" msgid "Missing external link" msgstr "Lien externe manquant" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "Choix invalide" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "Description (facultative)" msgid "parent" msgstr "parent" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "Doit être un nombre valide" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "Référence de l' Ordre de Fabrication" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "BuildOrder associé a cette fabrication" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "Lien Externe" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "Construction à laquelle allouer des pièces" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "Stock d'origine de l'article" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "Entrer la quantité désiré pour la fabrication" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "La quantité doit être supérieure à zéro" @@ -1015,7 +1015,7 @@ msgstr "Allouer automatiquement les numéros de série" msgid "Automatically allocate required items with matching serial numbers" msgstr "Affecter automatiquement les éléments requis avec les numéros de série correspondants" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "Le numéro de série suivant existe déjà" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "Une liste d'ordre de production doit être fourni" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "L'ordre de production a des sorties incomplètes" msgid "No build outputs have been created for this build order" msgstr "Aucune sortie de construction n'a été créée pour cet ordre de construction" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "L'article doit être en stock" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Pieces jointes" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2551,12 +2552,12 @@ msgstr "Composantes importées" msgid "Previous Step" msgstr "Étape précédente" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "URL de l'image" @@ -2713,7 +2714,7 @@ msgstr "" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "Télécharger l'image depuis l'URL" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "Entreprises" msgid "New Company" msgstr "Nouvelle Entreprise" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "" msgid "On Order" msgstr "En Commande" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Catégorie de composant" @@ -4160,7 +4153,7 @@ msgstr "Le numéro de série le plus récent est" msgid "Duplicate IPN not allowed in part settings" msgstr "IPN dupliqué non autorisé dans les paramètres de la pièce" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "" @@ -4193,7 +4186,7 @@ msgstr "" msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" @@ -4397,153 +4390,153 @@ msgstr "Données" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "ID de composant" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Surplus" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5414,83 +5407,59 @@ msgstr "" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "Aucun" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "Résultat" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "Les numéros de série doivent être une liste de nombres entiers" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "La quantité ne correspond pas au nombre de numéros de série" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "Les numéros de série existent déja : {exists}" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "Entrez les numéros de série pour les nouveaux articles" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "Cocher la case de confirmation" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "Autorisation refusée" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po index d1f475ce45..ca5f4aa6db 100644 --- a/InvenTree/locale/he/LC_MESSAGES/django.po +++ b/InvenTree/locale/he/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:43\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Hebrew\n" "Language: he_IL\n" @@ -124,7 +124,7 @@ msgstr "קובץ חסר" msgid "Missing external link" msgstr "חסר קישור חיצוני" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "בחירה שגויה" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "תיאור (לא חובה)" msgid "parent" msgstr "מקור" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "המספר חייב להיות תקין" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2551,12 +2552,12 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "" @@ -2713,7 +2714,7 @@ msgstr "" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "" msgid "On Order" msgstr "" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -4160,7 +4153,7 @@ msgstr "" msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "" @@ -4193,7 +4186,7 @@ msgstr "" msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" @@ -4397,153 +4390,153 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5414,83 +5407,59 @@ msgstr "" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/hu/LC_MESSAGES/django.po b/InvenTree/locale/hu/LC_MESSAGES/django.po index 0b2f4b37a3..3d757c4a15 100644 --- a/InvenTree/locale/hu/LC_MESSAGES/django.po +++ b/InvenTree/locale/hu/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:43\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Hungarian\n" "Language: hu_HU\n" @@ -124,7 +124,7 @@ msgstr "Hiányzó fájl" msgid "Missing external link" msgstr "Hiányzó külső link" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "Érvénytelen választás" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "Leírás (opcionális)" msgid "parent" msgstr "szülő" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "Érvényes számnak kell lennie" @@ -467,7 +467,7 @@ msgstr "Elutasított" #: InvenTree/status_codes.py:185 msgid "Quarantined" -msgstr "" +msgstr "Karanténban" #: InvenTree/status_codes.py:259 msgid "Legacy stock tracking entry" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "Gyártási utasítás azonosító" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "Külső link" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "Gyártás amihez készletet foglaljunk" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "Forrás készlet tétel" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "Add meg a mennyiséget a gyártás kimenetéhez" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "Mennyiségnek nullánál többnek kell lennie" @@ -1015,7 +1015,7 @@ msgstr "Sorozatszámok automatikus hozzárendelése" msgid "Automatically allocate required items with matching serial numbers" msgstr "Szükséges tételek automatikus hozzárendelése a megfelelő sorozatszámokkal" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "A következő sorozatszámok már léteznek" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "A gyártási kimenetek listáját meg kell adni" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1108,8 +1109,8 @@ msgstr "A gyártási utasítás befejezetlen kimeneteket tartalmaz" msgid "No build outputs have been created for this build order" msgstr "Ehhez a gyártási utasításhoz nem készült kimenet" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "Alkatrészjegyzék tétel" @@ -1125,7 +1126,7 @@ msgstr "A gyártási kimenetnek ugyanarra a gyártásra kell mutatnia" msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part ugyanarra az alkatrészre kell mutasson mint a gyártási utasítás" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "A tételnek kell legyen készlete" @@ -1478,7 +1479,7 @@ msgstr "Befejezett gyártási kimenetek" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Mellékletek" @@ -2281,19 +2282,19 @@ msgstr "Alkatrészek megjelenítése a keresési előnézetben" #: common/models.py:1345 msgid "Seach Supplier Parts" -msgstr "" +msgstr "Beszállítói alkatrészek keresése" #: common/models.py:1346 msgid "Display supplier parts in search preview window" -msgstr "" +msgstr "Beszállítói alkatrészek megjelenítése a keresési előnézetben" #: common/models.py:1352 msgid "Search Manufacturer Parts" -msgstr "" +msgstr "Gyártói alkatrészek keresése" #: common/models.py:1353 msgid "Display manufacturer parts in search preview window" -msgstr "" +msgstr "Gyártói alkatrészek megjelenítése a keresési előnézetben" #: common/models.py:1359 msgid "Hide Inactive Parts" @@ -2522,14 +2523,14 @@ msgid "Was the work on this message finished?" msgstr "Befejeződött a munka ezzel az üzenettel?" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "Fájl feltöltése" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "Mezők egyeztetése" @@ -2552,12 +2553,12 @@ msgstr "Importált alkatrészek" msgid "Previous Step" msgstr "Előző lépés" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "Kép URL" @@ -2714,7 +2715,7 @@ msgstr "Paraméter neve" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2726,7 +2727,7 @@ msgstr "Paraméter értéke" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "Mértékegységek" @@ -2779,7 +2780,7 @@ msgid "Supplier part description" msgstr "Beszállítói alkatrész leírása" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2868,7 +2869,7 @@ msgstr "Kép letöltése URL-ről" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3238,20 +3239,20 @@ msgstr "Cégek" msgid "New Company" msgstr "Új cég" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "Kép letöltése" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "A kép mérete meghaladja a maximum megengedett letöltés méretét" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "Érvénytelen válasz: {code}" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "A megadott URL nem egy érvényes kép fájl" @@ -3428,7 +3429,7 @@ msgstr "Csak függő rendelés jelölhető késznek" #: order/models.py:733 msgid "Order cannot be completed as there are incomplete shipments" -msgstr "A rendelés nem jelölhető késznek mivel nem teljesített szállítások vannak" +msgstr "A rendelés nem jelölhető késznek mivel függő szállítmányok vannak" #: order/models.py:736 msgid "Order cannot be completed as there are incomplete line items" @@ -3547,7 +3548,7 @@ msgstr "Szállítmány száma" #: order/models.py:1214 msgid "Shipment notes" -msgstr "Szállítás megjegyzései" +msgstr "Szállítmány megjegyzései" #: order/models.py:1221 msgid "Tracking Number" @@ -3559,11 +3560,11 @@ msgstr "Szállítmány nyomkövetési információ" #: order/models.py:1229 msgid "Invoice Number" -msgstr "" +msgstr "Számlaszám" #: order/models.py:1230 msgid "Reference number for associated invoice" -msgstr "" +msgstr "Hozzátartozó számla referencia száma" #: order/models.py:1248 msgid "Shipment has already been sent" @@ -3599,11 +3600,11 @@ msgstr "Egyedi követésre kötelezett tételeknél a menyiség 1 kell legyen" #: order/models.py:1378 msgid "Sales order does not match shipment" -msgstr "Vevői rendelés nem egyezik a szállítással" +msgstr "Vevői rendelés nem egyezik a szállítmánnyal" #: order/models.py:1379 msgid "Shipment does not match sales order" -msgstr "Szállítás nem egyezik a vevői rendeléssel" +msgstr "Szállítmány nem egyezik a vevői rendeléssel" #: order/models.py:1387 msgid "Line" @@ -3616,7 +3617,7 @@ msgstr "Szállítmány" #: order/models.py:1396 msgid "Sales order shipment reference" -msgstr "Vevői rendelés szállítás azonosító" +msgstr "Vevői rendelés szállítmány azonosító" #: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70 msgid "Item" @@ -3736,7 +3737,7 @@ msgstr "Szállítmány kiszállítva" #: order/serializers.py:1164 order/serializers.py:1284 msgid "Shipment is not associated with this order" -msgstr "Szállítás nincs hozzárendelve ehhez a rendeléshez" +msgstr "Szállítmány nincs hozzárendelve ehhez a rendeléshez" #: order/serializers.py:1214 msgid "No match found for the following serial numbers" @@ -3835,7 +3836,7 @@ msgstr "Teljes költség" #: order/templates/order/order_base.html:187 #: order/templates/order/sales_order_base.html:194 msgid "Total cost could not be calculated" -msgstr "" +msgstr "A teljes költség nem számolható" #: order/templates/order/order_base.html:243 msgid "Edit Purchase Order" @@ -3954,7 +3955,7 @@ msgstr "Csomagolási lista nyomtatása" #: order/templates/order/sales_order_base.html:60 #: templates/js/translated/order.js:226 msgid "Complete Shipments" -msgstr "" +msgstr "Szállítmányok készen" #: order/templates/order/sales_order_base.html:67 #: order/templates/order/sales_order_base.html:258 @@ -3974,7 +3975,7 @@ msgstr "Vevői azonosító" #: order/templates/order/sales_order_detail.html:100 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" -msgstr "Kész szállítások" +msgstr "Kész szállítmányok" #: order/templates/order/sales_order_base.html:230 msgid "Edit Sales Order" @@ -4021,47 +4022,47 @@ msgstr "A {part} egységára {price}-ra módosítva" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "A {part} alkatrész módosított egységára {price} mennyisége pedig {qty}" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "Beérkező beszerzési rendelés" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "Kimenő vevői rendelés" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "Gyártással előállított készlet" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "A gyártási utasításhoz szükséges készlet" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "Érvényes" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "Teljes alkatrészjegyzék jóváhagyása" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "Ennek az opciónak ki kll lennie választva" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "Nullánál nagyobb kell legyen" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "Érvényes mennyiségnek kell lennie" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "Hely megadása a kezdeti alkarész készlethez" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "Ez a mező kötelező" @@ -4086,19 +4087,11 @@ msgstr "Elérhető készlet" msgid "On Order" msgstr "Rendelve" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "Alkatrész kategória kiválasztása" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "Paraméter sablon hozzáadása az azonos szintű kategóriákhoz" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "Paraméter sablon hozzáadása az összes kategóriához" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "Add meg a mennyiséget az árszámításhoz" @@ -4114,7 +4107,7 @@ msgstr "Alapértelmezett kulcsszavak" msgid "Default keywords for parts in this category" msgstr "Ebben a kategóriában évő alkatrészek kulcsszavai alapban" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Alkatrész kategória" @@ -4161,7 +4154,7 @@ msgstr "A legutóbbi sorozatszám" msgid "Duplicate IPN not allowed in part settings" msgstr "Azonos IPN nem engedélyezett az alkatrész beállításokban" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "Alkatrész neve" @@ -4194,7 +4187,7 @@ msgstr "Kulcsszavak" msgid "Part keywords to improve visibility in search results" msgstr "Alkatrész kulcsszavak amik segítik a megjelenést a keresési eredményekben" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4385,7 +4378,7 @@ msgstr "Paraméter mértékegysége" msgid "Parent Part" msgstr "Szülő alkatrész" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "Paraméter sablon" @@ -4398,153 +4391,153 @@ msgstr "Adat" msgid "Parameter Value" msgstr "Paraméter értéke" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "Alapértelmezett érték" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "Alapértelmezett paraméter érték" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "Alkatrész ID vagy alkatrész név" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "Alkatrész ID" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "Egyedi alkatrész ID értéke" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "Alkatrész neve" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "Alkatrész IPN" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "Alkatrész IPN érték" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "Szint" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "Alkatrészjegyzék szint" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "Szülő alkatrész kiválasztása" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "Al alkatrész" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "Válaszd ki az alkatrészjegyzékben használandó alkatrészt" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "Alkatrészjegyzék mennyiség ehhez az alkatrészjegyzék tételhez" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "Opcionális" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "Ez az alkatrészjegyzék tétel opcionális" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Többlet" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Becsült gyártási veszteség (abszolút vagy százalékos)" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "Alkatrészjegyzék tétel azonosító" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "Alkatrészjegyzék tétel megjegyzései" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "Ellenőrző összeg" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "Alkatrészjegyzék sor ellenőrző összeg" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "Örökölt" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Ezt az alkatrészjegyzék tételt az alkatrész változatok alkatrészjegyzékei is öröklik" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "Változatok" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Alkatrészváltozatok készlet tételei használhatók ehhez az alkatrészjegyzék tételhez" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "A mennyiség egész szám kell legyen a követésre kötelezett alkatrészek esetén" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "Al alkatrészt kötelező megadni" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "Alkatrészjegyzék tétel helyettesítő" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "A helyettesítő alkatrész nem lehet ugyanaz mint a fő alkatrész" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "Szülő alkatrészjegyzék tétel" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "Helyettesítő alkatrész" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "1.rész" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "2.rész" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "Válassz kapcsolódó alkatrészt" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "Hiba a kapcsolat létrehozása közben: ellenőrizd hogy az alkatrész nem kapcsolódik-e saját magához és azt hogy a kapcsolat egyedi" @@ -4830,7 +4823,7 @@ msgstr "Alkatrész teszt sablonok" msgid "Add Test Template" msgstr "Teszt sablon hozzáadása" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "Vevői rendeléshez foglalások" @@ -4906,7 +4899,7 @@ msgstr "Gyártmányok" msgid "Part Builds" msgstr "Alkatrész gyártások" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "Gyártáshoz foglalások" @@ -5415,83 +5408,59 @@ msgstr "Ismeretlen adatbázis" msgid "{title} v{version}" msgstr "{title} v{version}" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "Alkatrész kategória beállítása" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "Állítsd be {n} alkatrész kategóriáját" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "Azonosítók egyeztetése" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "Egyik sem" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "Alkatrész QR kódja" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "Válassz képet az alkatrészhez" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "Alkatrész képe frissítve" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "Az alkatrész képe nem található" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "Alkatrész törlés megerősítése" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "Alkatrész törölve" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "Alkatrész árak" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "Alkatrész paraméter sablon létrehozása" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "Alkatrész paraméter sablon módosítása" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "Alkatrész paraméter sablon törlése" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "Alkatrész kategória törlése" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "Alkatrész kategória törölve" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "Kategória paraméter sablon létrehozása" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "Kategória paraméter sablon szerkesztése" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "Kategória paraméter sablon törlése" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "A környezeted egy elavult git verziót használ. Ez megakadályozza hogy az InvenTree betöltse a plugin részleteit." @@ -5798,12 +5767,12 @@ msgid "Test Results" msgstr "Teszt eredmények" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "Teszt" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "Eredmény" @@ -5833,15 +5802,15 @@ msgstr "Beépített tételek" msgid "Serial" msgstr "Sorozatszám" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "Mennyiség megadása kötelező" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "Egy érvényes alkatrészt meg kell adni" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "Sorozatszámot nem lehet megadni nem követésre kötelezett alkatrész esetén" @@ -5965,7 +5934,7 @@ msgstr "Törlés ha kimerül" msgid "Delete this Stock Item when stock is depleted" msgstr "Készlet tétel törlése ha kimerül" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "Készlet tétel megjegyzések" @@ -5977,105 +5946,105 @@ msgstr "Egy egység beszerzési ára a beszerzés időpontjában" msgid "Converted to part" msgstr "Alkatrésszé alakítva" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "Az alkatrész nem követésre kötelezett" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "Mennyiség egész szám kell legyen" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "A mennyiség nem lépheti túl a készletet ({n})" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "A sorozatszám egész számok listája kell legyen" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "A mennyiség nem egyezik a megadott sorozatszámok számával" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "Ezek a sorozatszámok már léteznek: {exists}" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "Készlet tétel hozzárendelve egy vevői rendeléshez" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "Készlet tétel beépül egy másikba" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "A készlet tétel más tételeket tartalmaz" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "Készlet tétel hozzárendelve egy vevőhöz" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "Készlet tétel gyártás alatt" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "Követésre kötelezett készlet nem vonható össze" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "Duplikált készlet tételek vannak" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "A készlet tétel ugyanarra az alkatrészre kell vonatkozzon" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "A készlet tétel ugyanarra a beszállítói alkatrészre kell vonatkozzon" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "Készlet tételek állapotainak egyeznie kell" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "Készlet tétel nem mozgatható mivel nincs készleten" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "Bejegyzés megjegyzései" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "Ehhez a teszthez meg kell adni értéket" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "Ehhez a teszthez fel kell tölteni mellékletet" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "Teszt neve" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "Teszt eredménye" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "Teszt kimeneti értéke" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "Teszt eredmény melléklet" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "Tesztek megjegyzései" @@ -6096,7 +6065,7 @@ msgstr "A mennyiség nem lépheti túl a rendelkezésre álló készletet ({q})" msgid "Enter serial numbers for new items" msgstr "Írd be a sorozatszámokat az új tételekhez" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "Cél készlet hely" @@ -6128,67 +6097,71 @@ msgstr "A kiválasztott alkatrész nincs az alkatrészjegyzékben" msgid "Destination location for uninstalled item" msgstr "Cél hely a kiszedett tételeknek" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "Tranzakció megjegyzés hozzáadása (opcionális)" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "Cél hely a visszatérő tételeknek" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "Az alkatrésznek értékesíthetőnek kell lennie" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "A tétel egy vevő rendeléshez foglalt" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "A tétel egy gyártási utasításhoz foglalt" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "Vevő akihez rendeljük a készlet tételeket" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "A kiválasztott cég nem egy vevő" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "Készlet hozzárendelés megjegyzései" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "A készlet tételek listáját meg kell adni" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "Készlet összevonás megjegyzései" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "Nem egyező beszállítók megengedése" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "Különböző beszállítói alkatrészekből származó készletek összevonásának engedélyezése" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "Nem egyező állapotok megjelenítése" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "Különböző állapotú készletek összevonásának engedélyezése" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "Legalább két készlet tételt meg kell adni" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "Készlet tétel elsődleges kulcs értéke" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "Készlet tranzakció megjegyzései" @@ -6196,44 +6169,40 @@ msgstr "Készlet tranzakció megjegyzései" msgid "Stock Tracking Information" msgstr "Készlettörténeti információk" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "Új bejegyzés" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "Al-készlet tételek" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "Ez a készlet tétel nem tartalmaz egy altételt sem" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "Teszt adatok" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "Teszt riport" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "Teszt adatok törlése" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "Teszt adatok hozzáadása" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "Beépített készlet tételek" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "Készlet tétel beépítése" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "Teszt eredmény hozzáadása" @@ -6388,7 +6357,7 @@ msgstr "Menj a következő sorozatszámhoz" #: stock/templates/stock/item_base.html:350 msgid "Available Quantity" -msgstr "" +msgstr "Elérhető mennyiség" #: stock/templates/stock/item_base.html:394 #: templates/js/translated/build.js:1693 @@ -6436,6 +6405,10 @@ msgstr "Még nem volt leltározva" msgid "Edit Stock Status" msgstr "Készlet állapot szerkesztése" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "Visszavétel készletre" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "Biztosan törölni szeretnéd ezt a készlet tételt?" @@ -6557,7 +6530,7 @@ msgstr "Foglalások" msgid "Child Items" msgstr "Gyermek tételek" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "Készlet tétel konvertálása" @@ -6578,62 +6551,34 @@ msgstr "Figyelem" msgid "This action cannot be easily undone" msgstr "Ez a művelet nem vonható vissza könnyen" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "Biztosan törölni akarod ezt a készlettörténeti bejegyzést?" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "Készlet hely QR kódja" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "Visszavétel készletre" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "Adj meg egy érvényes helyet" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "Készlet tétel vevőtől visszahozva" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "Minden teszt adat törlése" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "Teszt adat törlésének megerősítése" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "Klikkeld be a megerősítő mezőt" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "Készlet tétel QR kódja" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "Készlethely törlése" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "Készlet tétel törlése" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "Készlettörténet bejegyzés törlése" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "Készlettörténet bejegyzés szerkesztése" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "Készlettörténet bejegyzés hozzáadása" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "Hozzáférés megtagadva" @@ -6765,7 +6710,7 @@ msgid "Notifications" msgstr "Értesítések" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "Azonosító" @@ -7039,19 +6984,43 @@ msgid "No category parameter templates found" msgstr "Nincs kategória paraméter sablon" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "Sablon szerkesztése" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "Sablon törlése" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "Kategória paraméter sablon létrehozása" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "Kategória paraméter sablon törlése" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "Nincs alkatrész paraméter sablon" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "Alkatrész paraméter sablon létrehozása" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "Alkatrész paraméter sablon módosítása" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "Az összes erre a sablonra hivatkozó paraméter is törlésre kerül" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "Alkatrész paraméter sablon törlése" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -7592,11 +7561,11 @@ msgstr "Melléklet hozzáadása" #: templates/attachment_table.html:11 msgid "Delete selected attachments" -msgstr "" +msgstr "Kiválasztott mellékletek törlése" #: templates/attachment_table.html:12 templates/js/translated/attachment.js:110 msgid "Delete Attachments" -msgstr "" +msgstr "Mellékletek törlése" #: templates/base.html:101 msgid "Server Restart Required" @@ -7736,7 +7705,7 @@ msgstr "Hiba kód" #: templates/js/translated/attachment.js:96 msgid "All selected attachments will be deleted" -msgstr "" +msgstr "Az összes kijelölt melléklet törlésre kerül" #: templates/js/translated/attachment.js:156 msgid "No attachments found" @@ -8347,7 +8316,7 @@ msgstr "Az összes kiválasztott beszállítói alkatrész törölve lesz" #: templates/js/translated/company.js:263 msgid "Delete Supplier Parts" -msgstr "" +msgstr "Beszállítói alkatrészek törlése" #: templates/js/translated/company.js:342 msgid "Add new Company" @@ -8367,7 +8336,7 @@ msgstr "Nem található céginformáció" #: templates/js/translated/company.js:482 msgid "All selected manufacturer parts will be deleted" -msgstr "" +msgstr "Az összes kijelölt gyártói alkatrész törlésre kerül" #: templates/js/translated/company.js:496 msgid "Delete Manufacturer Parts" @@ -8375,7 +8344,7 @@ msgstr "Gyártói alkatrészek törlése" #: templates/js/translated/company.js:535 msgid "All selected parameters will be deleted" -msgstr "" +msgstr "Az összes kijelölt paraméter törlésre kerül" #: templates/js/translated/company.js:548 msgid "Delete Parameters" @@ -8714,15 +8683,15 @@ msgstr "Szállítmány megerősítése" #: templates/js/translated/order.js:212 msgid "No pending shipments found" -msgstr "" +msgstr "Nincs függő szállítmány" #: templates/js/translated/order.js:216 msgid "No stock items have been allocated to pending shipments" -msgstr "" +msgstr "A függő a szállítmányokhoz nincs készlet hozzárendelve" #: templates/js/translated/order.js:248 msgid "Skip" -msgstr "" +msgstr "Kihagyás" #: templates/js/translated/order.js:278 msgid "Complete Purchase Order" @@ -8991,19 +8960,19 @@ msgstr "Szállítmány azonosító" #: templates/js/translated/order.js:2662 msgid "Not shipped" -msgstr "Nincs szállítva" +msgstr "Nincs kiszállítva" #: templates/js/translated/order.js:2668 msgid "Tracking" -msgstr "Követés" +msgstr "Nyomkövetés" #: templates/js/translated/order.js:2672 msgid "Invoice" -msgstr "" +msgstr "Számla" #: templates/js/translated/order.js:2841 msgid "Add Shipment" -msgstr "" +msgstr "Szállítmány hozzáadása" #: templates/js/translated/order.js:2892 msgid "Confirm stock allocation" @@ -10005,7 +9974,7 @@ msgstr "Lista nézet megjenítése" #: templates/js/translated/tables.js:90 msgid "Display tree view" -msgstr "" +msgstr "Fa nézet megjelenítése" #: templates/js/translated/tables.js:142 msgid "Export Table Data" diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po index a17273f562..ddb68a3507 100644 --- a/InvenTree/locale/id/LC_MESSAGES/django.po +++ b/InvenTree/locale/id/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:42\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -124,7 +124,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "" msgid "parent" msgstr "" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2551,12 +2552,12 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "" @@ -2713,7 +2714,7 @@ msgstr "" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "" msgid "On Order" msgstr "" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -4160,7 +4153,7 @@ msgstr "" msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "" @@ -4193,7 +4186,7 @@ msgstr "" msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" @@ -4397,153 +4390,153 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5414,83 +5407,59 @@ msgstr "" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po index bd09b9d497..5cce51c3ae 100644 --- a/InvenTree/locale/it/LC_MESSAGES/django.po +++ b/InvenTree/locale/it/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:43\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -124,7 +124,7 @@ msgstr "File mancante" msgid "Missing external link" msgstr "Link esterno mancante" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "Scelta non valida" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "Descrizione (opzionale)" msgid "parent" msgstr "genitore" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "Deve essere un numero valido" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "Collegamento esterno" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "Origine giacenza articolo" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "Inserisci la quantità per l'output di compilazione" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "La quantità deve essere maggiore di zero" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "I seguenti numeri di serie sono già esistenti" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "Distinta base (Bom)" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "L'articolo deve essere disponibile" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Allegati" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "Carica file" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "Abbina Campi" @@ -2551,12 +2552,12 @@ msgstr "Articoli importati" msgid "Previous Step" msgstr "Passaggio Precedente" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "URL Immagine" @@ -2713,7 +2714,7 @@ msgstr "Nome parametro" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "Valore del parametro" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "Unità" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "Descrizione articolo fornitore" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "Scarica immagine dall'URL" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "Aziende" msgid "New Company" msgstr "Nuova Azienda" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "Download Immagine" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "La dimensione dell'immagine supera la dimensione massima consentita per il download" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "Risposta non valida: {code}" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "L'URL fornito non è un file immagine valido" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "Specifica la posizione per lo stock iniziale" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "Disponibilità in magazzino" msgid "On Order" msgstr "Ordinato" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "Seleziona categoria articolo" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "Digita la quantità per il calcolo del prezzo" @@ -4113,7 +4106,7 @@ msgstr "Keywords predefinite" msgid "Default keywords for parts in this category" msgstr "Parole chiave predefinite per gli articoli in questa categoria" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Categoria Articoli" @@ -4160,7 +4153,7 @@ msgstr "Il numero di serie più recente è" msgid "Duplicate IPN not allowed in part settings" msgstr "Non è consentito duplicare IPN nelle impostazioni dell'articolo" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "Nome articolo" @@ -4193,7 +4186,7 @@ msgstr "Parole Chiave" msgid "Part keywords to improve visibility in search results" msgstr "Parole chiave per migliorare la visibilità nei risultati di ricerca" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" @@ -4397,153 +4390,153 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "Codice Articolo" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "Consenti Le Varianti" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "Assegnazione Ordine Di Vendita" @@ -4905,7 +4898,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5414,83 +5407,59 @@ msgstr "Database sconosciuto" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "Imposta categoria articolo" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "Imposta categoria per {n} articoli" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "Elimina categoria" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "La Categoria articoli è stata eliminata" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "Crea Template Parametro Categoria" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "Modifica Modello Parametro Categoria" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "Elimina Modello Parametro Categoria" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "Seriale" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "La quantità è richiesta" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "Elimina al esaurimento" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "Posizione magazzino di destinazione" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "Nessun inventario eseguito" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "QR Code della posizione magazzino" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "Specificare una posizione valida" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "Elimina Posizione di Giacenza" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "Nessun parametro di categoria trovato" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "Crea Template Parametro Categoria" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "Elimina Modello Parametro Categoria" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po index 77167fba40..ba692c2ee7 100644 --- a/InvenTree/locale/ja/LC_MESSAGES/django.po +++ b/InvenTree/locale/ja/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:43\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -124,7 +124,7 @@ msgstr "ファイルがありません" msgid "Missing external link" msgstr "外部リンクが見つかりません。" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "無効な選択です" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "説明 (オプション)" msgid "parent" msgstr "親" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "有効な数字でなければなりません" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "パーツを割り当てるためにビルドする" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -903,7 +903,7 @@ msgstr "パーツを割り当てるためにビルドする" #: templates/js/translated/stock.js:532 templates/js/translated/stock.js:697 #: templates/js/translated/stock.js:2449 msgid "Stock Item" -msgstr "" +msgstr "在庫商品" #: build/models.py:1283 msgid "Source stock item" @@ -914,8 +914,8 @@ msgstr "" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2551,12 +2552,12 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "" @@ -2713,7 +2714,7 @@ msgstr "" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "" @@ -3505,7 +3506,7 @@ msgstr "" #: stock/serializers.py:153 stock/templates/stock/item_base.html:191 #: templates/js/translated/stock.js:1900 msgid "Purchase Price" -msgstr "" +msgstr "購入金額" #: order/models.py:1029 msgid "Unit purchase price" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "" msgid "On Order" msgstr "" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -4160,7 +4153,7 @@ msgstr "" msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "" @@ -4193,14 +4186,14 @@ msgstr "" msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 #: templates/InvenTree/settings/settings.html:231 #: templates/js/translated/part.js:1369 msgid "Category" -msgstr "" +msgstr "カテゴリ" #: part/models.py:777 msgid "Part category" @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" @@ -4397,153 +4390,153 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4693,7 +4686,7 @@ msgstr "" #: part/templates/part/category.html:62 msgid "New Category" -msgstr "" +msgstr "新規カテゴリ" #: part/templates/part/category.html:80 part/templates/part/category.html:93 msgid "Category Path" @@ -4751,7 +4744,7 @@ msgstr "" #: part/templates/part/category.html:337 msgid "Create another part after this one" -msgstr "" +msgstr "続けて別のパーツを作る" #: part/templates/part/category.html:338 msgid "Part created successfully" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5353,7 +5346,7 @@ msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/part.js:543 #: templates/js/translated/part.js:1221 templates/js/translated/part.js:1425 msgid "No Stock" -msgstr "" +msgstr "在庫切れ" #: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:158 msgid "Low Stock" @@ -5414,83 +5407,59 @@ msgstr "" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6406,7 +6375,7 @@ msgstr "" #: stock/templates/stock/item_base.html:433 #: templates/js/translated/table_filters.js:261 msgid "Expired" -msgstr "" +msgstr "期限切れ" #: stock/templates/stock/item_base.html:435 #, python-format @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6704,7 +6649,7 @@ msgstr "" #: templates/InvenTree/index.html:191 msgid "Expired Stock" -msgstr "" +msgstr "期限切れ在庫" #: templates/InvenTree/index.html:202 msgid "Stale Stock" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.po b/InvenTree/locale/ko/LC_MESSAGES/django.po index 288ff8648f..8c460c8c65 100644 --- a/InvenTree/locale/ko/LC_MESSAGES/django.po +++ b/InvenTree/locale/ko/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:43\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Korean\n" "Language: ko_KR\n" @@ -124,7 +124,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "설명 (선택 사항)" msgid "parent" msgstr "" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "유효한 숫자여야 합니다" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "외부 링크" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "수량 값은 0보다 커야 합니다" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "파일 업로드" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2551,12 +2552,12 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "이미지 URL" @@ -2713,7 +2714,7 @@ msgstr "" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "URL에서 이미지 다운로드" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "" msgid "New Company" msgstr "새 회사" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "이미지 다운로드" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "" msgid "On Order" msgstr "" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -4160,7 +4153,7 @@ msgstr "" msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "" @@ -4193,7 +4186,7 @@ msgstr "" msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" @@ -4397,153 +4390,153 @@ msgstr "데이터" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5414,83 +5407,59 @@ msgstr "" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "경고" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.po b/InvenTree/locale/nl/LC_MESSAGES/django.po index 477ef05c5b..cb99d4f47b 100644 --- a/InvenTree/locale/nl/LC_MESSAGES/django.po +++ b/InvenTree/locale/nl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:43\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -124,7 +124,7 @@ msgstr "Ontbrekend bestand" msgid "Missing external link" msgstr "Externe link ontbreekt" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "Ongeldige keuze" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "Omschrijving (optioneel)" msgid "parent" msgstr "bovenliggende" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "Moet een geldig nummer zijn" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "Productieopdracht Referentie" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "Productieopdracht waar dit productie aan is toegewezen" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "Externe Link" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "Product om onderdelen toe te wijzen" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "Bron voorraadartikel" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "Voer hoeveelheid in voor productie uitvoer" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "Hoeveelheid moet groter zijn dan nul" @@ -1015,7 +1015,7 @@ msgstr "Serienummers automatisch toewijzen" msgid "Automatically allocate required items with matching serial numbers" msgstr "Vereiste artikelen automatisch toewijzen met overeenkomende serienummers" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "De volgende serienummers bestaan al" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "Een lijst van productieuitvoeren moet worden verstrekt" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "Productieorder heeft onvolledige uitvoeren" msgid "No build outputs have been created for this build order" msgstr "Er zijn geen productuitvoeren aangemaakt voor deze productieorder" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "Stuklijstartikel" @@ -1124,7 +1125,7 @@ msgstr "Productieuitvoer moet naar dezelfde productie wijzen" msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part moet naar hetzelfde onderdeel wijzen als de productieorder" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "Artikel moet op voorraad zijn" @@ -1477,7 +1478,7 @@ msgstr "Voltooide Productieuitvoeren" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Bijlagen" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2551,12 +2552,12 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "" @@ -2713,7 +2714,7 @@ msgstr "" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "Parameterwaarde" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "Eenheden" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "" msgid "On Order" msgstr "" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -4160,7 +4153,7 @@ msgstr "" msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "" @@ -4193,7 +4186,7 @@ msgstr "" msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" @@ -4397,153 +4390,153 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "Verkoopopdracht Toewijzingen" @@ -4905,7 +4898,7 @@ msgstr "Assemblages" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "Productieopdracht Toewijzingen" @@ -5414,83 +5407,59 @@ msgstr "" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "QR-code voor Voorraadlocatie" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "Specificeer een geldige locatie" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "Verwijder Voorraadlocatie" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/no/LC_MESSAGES/django.po b/InvenTree/locale/no/LC_MESSAGES/django.po index 86d6db9165..ee362d4daa 100644 --- a/InvenTree/locale/no/LC_MESSAGES/django.po +++ b/InvenTree/locale/no/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:43\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Norwegian\n" "Language: no_NO\n" @@ -124,7 +124,7 @@ msgstr "Fil mangler" msgid "Missing external link" msgstr "Mangler eksternlenke" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "Ugyldig valg" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "Beskrivelse (valgfritt)" msgid "parent" msgstr "overkategori" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "Nummer må være gyldig" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "Bygg ordrereferanse" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "Build order som denne build er tildelt til" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "Ekstern link" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "Bygge for å tildele deler" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "Kilde lagervare" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "Angi antall for build utgang" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "Mengden må være større enn null" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "BOM varer" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "Varen må være på lager" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Vedlegg" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "Var arbeidet med denne meldingen ferdig?" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "Last opp fil" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "Sammelign felter" @@ -2551,12 +2552,12 @@ msgstr "Deler importert" msgid "Previous Step" msgstr "Forrige trinn" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "Bilde URL" @@ -2713,7 +2714,7 @@ msgstr "" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "Last ned bilde fra URL" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "" msgid "On Order" msgstr "" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -4160,7 +4153,7 @@ msgstr "" msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "" @@ -4193,7 +4186,7 @@ msgstr "" msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" @@ -4397,153 +4390,153 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5414,83 +5407,59 @@ msgstr "" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "Sjekk bekreftelsesboksen" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po index 0ded9077aa..be1e766494 100644 --- a/InvenTree/locale/pl/LC_MESSAGES/django.po +++ b/InvenTree/locale/pl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:43\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Polish\n" "Language: pl_PL\n" @@ -124,7 +124,7 @@ msgstr "Brak pliku" msgid "Missing external link" msgstr "Brak zewnętrznego odnośnika" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "Błędny wybór" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "Opis (opcjonalny)" msgid "parent" msgstr "nadrzędny" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "Numer musi być prawidłowy" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "Odwołanie do zamówienia wykonania" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "Link Zewnętrzny" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "Lokalizacja magazynowania przedmiotu" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "Ilość musi być większa niż zero" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "Element BOM" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "Towar musi znajdować się w magazynie" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Załączniki" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "Wyślij plik" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2551,12 +2552,12 @@ msgstr "" msgid "Previous Step" msgstr "Poprzedni krok" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "URL zdjęcia" @@ -2713,7 +2714,7 @@ msgstr "" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "Jednostki" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "Pobierz obraz z adresu URL" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "Firmy" msgid "New Company" msgstr "Nowa firma" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "Pobierz obraz" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "Ważny" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "Ta opcja musi być zaznaczona" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "Musi być większe niż zero" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "Musi być prawidłową ilością" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "To pole jest wymagane" @@ -4085,19 +4086,11 @@ msgstr "Dostępna ilość" msgid "On Order" msgstr "W Zamówieniu" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "Wybierz kategorię części" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "Domyślne słowa kluczowe" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Kategoria komponentu" @@ -4160,7 +4153,7 @@ msgstr "" msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "Nazwa komponentu" @@ -4193,7 +4186,7 @@ msgstr "Słowa kluczowe" msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "Część nadrzędna" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" @@ -4397,153 +4390,153 @@ msgstr "Dane" msgid "Parameter Value" msgstr "Wartość parametru" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "Wartość domyślna" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "ID komponentu" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "Unikalny wartość ID komponentu" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "Nazwa komponentu" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "IPN komponentu" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "Wartość IPN części" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "Poziom" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "Wybierz część nadrzędną" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "Podczęść" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "Opcjonalne" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "Ten element BOM jest opcjonalny" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "Notatki pozycji BOM" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "Suma kontrolna" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "Dziedziczone" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "Zezwalaj na warianty" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "Część zastępcza" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "Część 1" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "Część 2" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "Wybierz powiązaną część" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "Złożenia" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5416,83 +5409,59 @@ msgstr "Nieznana baza danych" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "Ustaw kategorię części" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "Żaden" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "Kod QR części" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "Wybierz obrazek części" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "Zaktualizowano zdjęcie części" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "Nie znaleziono obrazka części" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "Potwierdź usunięcie części" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "Część została usunięta" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "Cennik części" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5799,12 +5768,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "Wynik" @@ -5834,15 +5803,15 @@ msgstr "Zainstalowane elementy" msgid "Serial" msgstr "Numer seryjny" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5966,7 +5935,7 @@ msgstr "Usuń po wyczerpaniu" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5978,105 +5947,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "Ilość musi być liczbą całkowitą" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "Ilość nie może przekraczać dostępnej ilości towaru ({n})" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "Notatki do wpisu" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "Należy podać wartość dla tego testu" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "Nazwa testu" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "Wynik testu" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6097,7 +6066,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6129,67 +6098,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "Część musi być dostępna do sprzedaży" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6197,44 +6170,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6437,6 +6406,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "Wróć do stanu magazynowego" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "Czy na pewno chcesz usunąć tą część?" @@ -6558,7 +6531,7 @@ msgstr "" msgid "Child Items" msgstr "Elementy podrzędne" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6579,62 +6552,34 @@ msgstr "Ostrzeżenie" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "Wróć do stanu magazynowego" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "Usuń wszystkie dane testowe" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "Odmowa dostępu" @@ -6766,7 +6711,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7040,19 +6985,43 @@ msgid "No category parameter templates found" msgstr "Nie znaleziono szablonów parametrów kategorii" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "Edytuj szablon" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "Usuń szablon" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "Nie znaleziono szablonów parametrów części" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/pt/LC_MESSAGES/django.po b/InvenTree/locale/pt/LC_MESSAGES/django.po index 6789d2f048..cbd00e0665 100644 --- a/InvenTree/locale/pt/LC_MESSAGES/django.po +++ b/InvenTree/locale/pt/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:42\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" @@ -124,7 +124,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "" msgid "parent" msgstr "" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2551,12 +2552,12 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "" @@ -2713,7 +2714,7 @@ msgstr "" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "" msgid "On Order" msgstr "" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -4160,7 +4153,7 @@ msgstr "" msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "" @@ -4193,7 +4186,7 @@ msgstr "" msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" @@ -4397,153 +4390,153 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5414,83 +5407,59 @@ msgstr "" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/pt_br/LC_MESSAGES/django.po b/InvenTree/locale/pt_br/LC_MESSAGES/django.po index e523398046..a37441586b 100644 --- a/InvenTree/locale/pt_br/LC_MESSAGES/django.po +++ b/InvenTree/locale/pt_br/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-31 04:27+0000\n" +"POT-Creation-Date: 2022-06-03 10:21+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,44 +18,44 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: InvenTree/api.py:49 +#: InvenTree/api.py:46 msgid "API endpoint not found" msgstr "" -#: InvenTree/exceptions.py:50 +#: InvenTree/exceptions.py:46 msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:96 +#: InvenTree/fields.py:94 msgid "Enter date" msgstr "" -#: InvenTree/forms.py:124 templates/account/email_confirm.html:20 +#: InvenTree/forms.py:117 templates/account/email_confirm.html:20 #: templates/js/translated/forms.js:630 msgid "Confirm" msgstr "" -#: InvenTree/forms.py:140 +#: InvenTree/forms.py:134 msgid "Confirm delete" msgstr "" -#: InvenTree/forms.py:141 +#: InvenTree/forms.py:135 msgid "Confirm item deletion" msgstr "" -#: InvenTree/forms.py:172 +#: InvenTree/forms.py:167 msgid "Enter password" msgstr "" -#: InvenTree/forms.py:173 +#: InvenTree/forms.py:168 msgid "Enter new password" msgstr "" -#: InvenTree/forms.py:180 +#: InvenTree/forms.py:175 msgid "Confirm password" msgstr "" -#: InvenTree/forms.py:181 +#: InvenTree/forms.py:176 msgid "Confirm new password" msgstr "" @@ -71,72 +71,73 @@ msgstr "" msgid "Email address confirmation" msgstr "" -#: InvenTree/forms.py:258 +#: InvenTree/forms.py:259 msgid "You must type the same email each time." msgstr "" -#: InvenTree/helpers.py:449 +#: InvenTree/helpers.py:402 #, python-brace-format msgid "Duplicate serial: {sn}" msgstr "" -#: InvenTree/helpers.py:456 order/models.py:365 order/models.py:519 +#: InvenTree/helpers.py:409 order/models.py:365 order/models.py:517 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:459 +#: InvenTree/helpers.py:412 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:491 +#: InvenTree/helpers.py:444 #, python-brace-format msgid "Invalid group range: {g}" msgstr "" -#: InvenTree/helpers.py:494 +#: InvenTree/helpers.py:447 #, python-brace-format msgid "Invalid group: {g}" msgstr "" -#: InvenTree/helpers.py:522 +#: InvenTree/helpers.py:475 #, python-brace-format msgid "Invalid group sequence: {g}" msgstr "" -#: InvenTree/helpers.py:530 +#: InvenTree/helpers.py:483 #, python-brace-format msgid "Invalid/no group {group}" msgstr "" -#: InvenTree/helpers.py:536 +#: InvenTree/helpers.py:489 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:540 +#: InvenTree/helpers.py:493 #, python-brace-format msgid "Number of unique serial numbers ({s}) must match quantity ({q})" msgstr "" -#: InvenTree/models.py:181 +#: InvenTree/models.py:174 msgid "Missing file" msgstr "" -#: InvenTree/models.py:182 +#: InvenTree/models.py:175 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:193 stock/models.py:2202 -#: templates/js/translated/attachment.js:119 +#: InvenTree/models.py:187 stock/models.py:2087 +#: templates/js/translated/attachment.js:101 +#: templates/js/translated/attachment.js:198 msgid "Attachment" msgstr "" -#: InvenTree/models.py:194 +#: InvenTree/models.py:188 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:200 company/models.py:123 company/models.py:337 -#: company/models.py:569 order/models.py:139 order/models.py:1273 -#: part/models.py:855 +#: InvenTree/models.py:194 company/models.py:123 company/models.py:272 +#: company/models.py:506 order/models.py:135 order/models.py:1235 +#: part/models.py:795 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:655 #: templates/js/translated/company.js:946 templates/js/translated/order.js:2676 @@ -144,64 +145,65 @@ msgstr "" msgid "Link" msgstr "" -#: InvenTree/models.py:201 build/models.py:330 part/models.py:856 -#: stock/models.py:665 +#: InvenTree/models.py:195 build/models.py:320 part/models.py:796 +#: stock/models.py:642 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:204 templates/js/translated/attachment.js:163 +#: InvenTree/models.py:198 templates/js/translated/attachment.js:102 +#: templates/js/translated/attachment.js:242 msgid "Comment" msgstr "" -#: InvenTree/models.py:204 +#: InvenTree/models.py:198 msgid "File comment" msgstr "" -#: InvenTree/models.py:210 InvenTree/models.py:211 common/models.py:1581 -#: common/models.py:1582 common/models.py:1816 common/models.py:1817 -#: common/models.py:2044 common/models.py:2045 part/models.py:2357 -#: part/models.py:2377 plugin/models.py:260 plugin/models.py:261 +#: InvenTree/models.py:204 InvenTree/models.py:205 common/models.py:1499 +#: common/models.py:1500 common/models.py:1728 common/models.py:1729 +#: common/models.py:1991 common/models.py:1992 part/models.py:2153 +#: part/models.py:2173 plugin/models.py:238 plugin/models.py:239 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2513 msgid "User" msgstr "" -#: InvenTree/models.py:214 +#: InvenTree/models.py:208 msgid "upload date" msgstr "" -#: InvenTree/models.py:237 +#: InvenTree/models.py:230 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:260 +#: InvenTree/models.py:253 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:270 +#: InvenTree/models.py:263 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:273 +#: InvenTree/models.py:266 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:280 +#: InvenTree/models.py:273 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:287 +#: InvenTree/models.py:280 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:322 +#: InvenTree/models.py:314 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:338 InvenTree/models.py:339 common/models.py:1802 -#: company/models.py:420 label/models.py:104 part/models.py:799 -#: part/models.py:2541 plugin/models.py:99 report/models.py:169 +#: InvenTree/models.py:333 InvenTree/models.py:334 common/models.py:1714 +#: company/models.py:354 label/models.py:101 part/models.py:739 +#: part/models.py:2331 plugin/models.py:93 report/models.py:151 #: templates/InvenTree/notifications/notifications.html:84 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:49 @@ -215,15 +217,15 @@ msgstr "" msgid "Name" msgstr "" -#: InvenTree/models.py:345 build/models.py:207 -#: build/templates/build/detail.html:24 company/models.py:343 -#: company/models.py:575 company/templates/company/company_base.html:71 +#: InvenTree/models.py:340 build/models.py:197 +#: build/templates/build/detail.html:24 company/models.py:278 +#: company/models.py:512 company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:73 label/models.py:111 -#: order/models.py:137 part/models.py:822 part/templates/part/category.html:74 +#: company/templates/company/supplier_part.html:73 label/models.py:108 +#: order/models.py:133 part/models.py:762 part/templates/part/category.html:74 #: part/templates/part/part_base.html:167 -#: part/templates/part/set_category.html:14 report/models.py:182 -#: report/models.py:547 report/models.py:586 +#: part/templates/part/set_category.html:14 report/models.py:164 +#: report/models.py:509 report/models.py:550 #: report/templates/report/inventree_build_order_base.html:118 #: stock/templates/stock/location.html:103 #: templates/InvenTree/settings/plugin_settings.html:33 @@ -239,232 +241,232 @@ msgstr "" msgid "Description" msgstr "" -#: InvenTree/models.py:346 +#: InvenTree/models.py:341 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:354 +#: InvenTree/models.py:349 msgid "parent" msgstr "" -#: InvenTree/serializers.py:59 part/models.py:2874 +#: InvenTree/serializers.py:52 part/models.py:2650 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:293 +#: InvenTree/serializers.py:271 msgid "Filename" msgstr "" -#: InvenTree/serializers.py:328 +#: InvenTree/serializers.py:306 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:349 +#: InvenTree/serializers.py:328 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:350 +#: InvenTree/serializers.py:329 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:374 +#: InvenTree/serializers.py:350 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:380 +#: InvenTree/serializers.py:356 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:401 +#: InvenTree/serializers.py:377 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:404 +#: InvenTree/serializers.py:380 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:530 +#: InvenTree/serializers.py:503 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:533 +#: InvenTree/serializers.py:506 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:620 +#: InvenTree/serializers.py:583 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:629 +#: InvenTree/serializers.py:592 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/settings.py:669 +#: InvenTree/settings.py:667 msgid "Czech" msgstr "" -#: InvenTree/settings.py:670 +#: InvenTree/settings.py:668 msgid "German" msgstr "" -#: InvenTree/settings.py:671 +#: InvenTree/settings.py:669 msgid "Greek" msgstr "" -#: InvenTree/settings.py:672 +#: InvenTree/settings.py:670 msgid "English" msgstr "" -#: InvenTree/settings.py:673 +#: InvenTree/settings.py:671 msgid "Spanish" msgstr "" -#: InvenTree/settings.py:674 +#: InvenTree/settings.py:672 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:675 +#: InvenTree/settings.py:673 msgid "Farsi / Persian" msgstr "" -#: InvenTree/settings.py:676 +#: InvenTree/settings.py:674 msgid "French" msgstr "" -#: InvenTree/settings.py:677 +#: InvenTree/settings.py:675 msgid "Hebrew" msgstr "" -#: InvenTree/settings.py:678 +#: InvenTree/settings.py:676 msgid "Hungarian" msgstr "" -#: InvenTree/settings.py:679 +#: InvenTree/settings.py:677 msgid "Italian" msgstr "" -#: InvenTree/settings.py:680 +#: InvenTree/settings.py:678 msgid "Japanese" msgstr "" -#: InvenTree/settings.py:681 +#: InvenTree/settings.py:679 msgid "Korean" msgstr "" -#: InvenTree/settings.py:682 +#: InvenTree/settings.py:680 msgid "Dutch" msgstr "" -#: InvenTree/settings.py:683 +#: InvenTree/settings.py:681 msgid "Norwegian" msgstr "" -#: InvenTree/settings.py:684 +#: InvenTree/settings.py:682 msgid "Polish" msgstr "" -#: InvenTree/settings.py:685 +#: InvenTree/settings.py:683 msgid "Portuguese" msgstr "" -#: InvenTree/settings.py:686 +#: InvenTree/settings.py:684 msgid "Portuguese (Brazilian)" msgstr "" -#: InvenTree/settings.py:687 +#: InvenTree/settings.py:685 msgid "Russian" msgstr "" -#: InvenTree/settings.py:688 +#: InvenTree/settings.py:686 msgid "Swedish" msgstr "" -#: InvenTree/settings.py:689 +#: InvenTree/settings.py:687 msgid "Thai" msgstr "" -#: InvenTree/settings.py:690 +#: InvenTree/settings.py:688 msgid "Turkish" msgstr "" -#: InvenTree/settings.py:691 +#: InvenTree/settings.py:689 msgid "Vietnamese" msgstr "" -#: InvenTree/settings.py:692 +#: InvenTree/settings.py:690 msgid "Chinese" msgstr "" -#: InvenTree/status.py:108 +#: InvenTree/status.py:99 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:112 +#: InvenTree/status.py:103 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:115 +#: InvenTree/status.py:106 msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142 +#: InvenTree/status_codes.py:99 InvenTree/status_codes.py:140 #: InvenTree/status_codes.py:306 templates/js/translated/table_filters.js:326 msgid "Pending" msgstr "" -#: InvenTree/status_codes.py:102 +#: InvenTree/status_codes.py:100 msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:309 +#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:309 #: order/templates/order/order_base.html:134 #: order/templates/order/sales_order_base.html:133 msgid "Complete" msgstr "" -#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 +#: InvenTree/status_codes.py:102 InvenTree/status_codes.py:142 #: InvenTree/status_codes.py:308 msgid "Cancelled" msgstr "" -#: InvenTree/status_codes.py:105 InvenTree/status_codes.py:145 -#: InvenTree/status_codes.py:184 +#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:143 +#: InvenTree/status_codes.py:183 msgid "Lost" msgstr "" -#: InvenTree/status_codes.py:106 InvenTree/status_codes.py:146 -#: InvenTree/status_codes.py:187 +#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144 +#: InvenTree/status_codes.py:186 msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:143 order/models.py:1141 -#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3581 +#: InvenTree/status_codes.py:141 order/models.py:1114 +#: templates/js/translated/order.js:3264 templates/js/translated/order.js:3607 msgid "Shipped" msgstr "" -#: InvenTree/status_codes.py:180 +#: InvenTree/status_codes.py:179 msgid "OK" msgstr "" -#: InvenTree/status_codes.py:181 +#: InvenTree/status_codes.py:180 msgid "Attention needed" msgstr "" -#: InvenTree/status_codes.py:182 +#: InvenTree/status_codes.py:181 msgid "Damaged" msgstr "" -#: InvenTree/status_codes.py:183 +#: InvenTree/status_codes.py:182 msgid "Destroyed" msgstr "" -#: InvenTree/status_codes.py:185 +#: InvenTree/status_codes.py:184 msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:186 +#: InvenTree/status_codes.py:185 msgid "Quarantined" msgstr "" @@ -560,123 +562,123 @@ msgstr "" msgid "Production" msgstr "" -#: InvenTree/validators.py:23 +#: InvenTree/validators.py:18 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:51 +#: InvenTree/validators.py:45 msgid "Invalid character in part name" msgstr "" -#: InvenTree/validators.py:64 +#: InvenTree/validators.py:57 #, python-brace-format msgid "IPN must match regex pattern {pat}" msgstr "" -#: InvenTree/validators.py:78 InvenTree/validators.py:92 -#: InvenTree/validators.py:106 +#: InvenTree/validators.py:68 InvenTree/validators.py:79 +#: InvenTree/validators.py:90 #, python-brace-format msgid "Reference must match pattern {pattern}" msgstr "" -#: InvenTree/validators.py:114 +#: InvenTree/validators.py:97 #, python-brace-format msgid "Illegal character in name ({x})" msgstr "" -#: InvenTree/validators.py:135 InvenTree/validators.py:151 +#: InvenTree/validators.py:116 InvenTree/validators.py:132 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:153 +#: InvenTree/validators.py:134 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:160 +#: InvenTree/validators.py:141 msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:534 +#: InvenTree/views.py:522 msgid "Delete Item" msgstr "" -#: InvenTree/views.py:583 +#: InvenTree/views.py:571 msgid "Check box to confirm item deletion" msgstr "" -#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:22 +#: InvenTree/views.py:586 templates/InvenTree/settings/user.html:22 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:609 templates/InvenTree/settings/user.html:19 +#: InvenTree/views.py:598 templates/InvenTree/settings/user.html:19 msgid "Set Password" msgstr "" -#: InvenTree/views.py:628 +#: InvenTree/views.py:618 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:875 templates/navbar.html:152 +#: InvenTree/views.py:842 templates/navbar.html:152 msgid "System Information" msgstr "" -#: build/models.py:133 +#: build/models.py:126 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:137 build/templates/build/build_base.html:9 +#: build/models.py:131 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 #: templates/js/translated/build.js:727 msgid "Build Order" msgstr "" -#: build/models.py:138 build/templates/build/build_base.html:13 +#: build/models.py:132 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 #: order/templates/order/sales_order_detail.html:114 #: order/templates/order/so_sidebar.html:13 #: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:221 #: templates/InvenTree/search.html:139 -#: templates/InvenTree/settings/sidebar.html:45 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:45 users/models.py:40 msgid "Build Orders" msgstr "" -#: build/models.py:198 +#: build/models.py:188 msgid "Build Order Reference" msgstr "" -#: build/models.py:199 order/models.py:295 order/models.py:647 -#: order/models.py:942 part/models.py:2785 +#: build/models.py:189 order/models.py:288 order/models.py:638 +#: order/models.py:916 part/models.py:2568 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 #: templates/js/translated/bom.js:688 templates/js/translated/bom.js:858 #: templates/js/translated/build.js:1777 templates/js/translated/order.js:1919 #: templates/js/translated/order.js:2120 templates/js/translated/order.js:3448 -#: templates/js/translated/order.js:3933 +#: templates/js/translated/order.js:3959 msgid "Reference" msgstr "" -#: build/models.py:210 +#: build/models.py:200 msgid "Brief description of the build" msgstr "" -#: build/models.py:219 build/templates/build/build_base.html:169 +#: build/models.py:209 build/templates/build/build_base.html:169 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:220 +#: build/models.py:210 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:225 build/templates/build/build_base.html:77 -#: build/templates/build/detail.html:29 company/models.py:711 -#: order/models.py:1041 order/models.py:1130 part/models.py:354 -#: part/models.py:2303 part/models.py:2319 part/models.py:2338 -#: part/models.py:2355 part/models.py:2457 part/models.py:2579 -#: part/models.py:2669 part/models.py:2760 part/models.py:3047 -#: part/serializers.py:917 part/templates/part/part_app_base.html:8 +#: build/models.py:215 build/templates/build/build_base.html:77 +#: build/templates/build/detail.html:29 company/models.py:647 +#: order/models.py:1012 order/models.py:1103 part/models.py:336 +#: part/models.py:2099 part/models.py:2114 part/models.py:2133 +#: part/models.py:2151 part/models.py:2250 part/models.py:2370 +#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 #: part/templates/part/upload_bom.html:52 @@ -705,193 +707,193 @@ msgstr "" msgid "Part" msgstr "" -#: build/models.py:233 +#: build/models.py:223 msgid "Select part to build" msgstr "" -#: build/models.py:238 +#: build/models.py:228 msgid "Sales Order Reference" msgstr "" -#: build/models.py:242 +#: build/models.py:232 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 build/serializers.py:790 +#: build/models.py:237 build/serializers.py:758 #: templates/js/translated/build.js:2071 templates/js/translated/order.js:2807 msgid "Source Location" msgstr "" -#: build/models.py:251 +#: build/models.py:241 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:256 +#: build/models.py:246 msgid "Destination Location" msgstr "" -#: build/models.py:260 +#: build/models.py:250 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:264 +#: build/models.py:254 msgid "Build Quantity" msgstr "" -#: build/models.py:267 +#: build/models.py:257 msgid "Number of stock items to build" msgstr "" -#: build/models.py:271 +#: build/models.py:261 msgid "Completed items" msgstr "" -#: build/models.py:273 +#: build/models.py:263 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:277 +#: build/models.py:267 msgid "Build Status" msgstr "" -#: build/models.py:281 +#: build/models.py:271 msgid "Build status code" msgstr "" -#: build/models.py:285 build/serializers.py:220 order/serializers.py:440 -#: stock/models.py:669 templates/js/translated/order.js:1175 +#: build/models.py:275 build/serializers.py:215 order/serializers.py:440 +#: stock/models.py:646 templates/js/translated/order.js:1175 msgid "Batch Code" msgstr "" -#: build/models.py:289 build/serializers.py:221 +#: build/models.py:279 build/serializers.py:216 msgid "Batch code for this build output" msgstr "" -#: build/models.py:292 order/models.py:141 part/models.py:994 +#: build/models.py:282 order/models.py:137 part/models.py:932 #: part/templates/part/part_base.html:305 templates/js/translated/order.js:2489 msgid "Creation Date" msgstr "" -#: build/models.py:296 order/models.py:669 +#: build/models.py:286 order/models.py:660 msgid "Target completion date" msgstr "" -#: build/models.py:297 +#: build/models.py:287 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:300 order/models.py:338 +#: build/models.py:290 order/models.py:331 #: templates/js/translated/build.js:2558 msgid "Completion Date" msgstr "" -#: build/models.py:306 +#: build/models.py:296 msgid "completed by" msgstr "" -#: build/models.py:314 templates/js/translated/build.js:2526 +#: build/models.py:304 templates/js/translated/build.js:2526 msgid "Issued by" msgstr "" -#: build/models.py:315 +#: build/models.py:305 msgid "User who issued this build order" msgstr "" -#: build/models.py:323 build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:115 order/models.py:155 +#: build/models.py:313 build/templates/build/build_base.html:190 +#: build/templates/build/detail.html:115 order/models.py:151 #: order/templates/order/order_base.html:176 -#: order/templates/order/sales_order_base.html:183 part/models.py:998 +#: order/templates/order/sales_order_base.html:183 part/models.py:936 #: report/templates/report/inventree_build_order_base.html:159 #: templates/js/translated/build.js:2538 templates/js/translated/order.js:1690 msgid "Responsible" msgstr "" -#: build/models.py:324 +#: build/models.py:314 msgid "User responsible for this build order" msgstr "" -#: build/models.py:329 build/templates/build/detail.html:101 +#: build/models.py:319 build/templates/build/detail.html:101 #: company/templates/company/manufacturer_part.html:107 #: company/templates/company/supplier_part.html:132 -#: part/templates/part/part_base.html:346 stock/models.py:663 +#: part/templates/part/part_base.html:346 stock/models.py:640 #: stock/templates/stock/item_base.html:205 msgid "External Link" msgstr "" -#: build/models.py:334 build/serializers.py:390 +#: build/models.py:324 build/serializers.py:374 #: build/templates/build/sidebar.html:21 company/models.py:134 -#: company/models.py:582 company/templates/company/sidebar.html:25 -#: order/models.py:159 order/models.py:944 order/models.py:1251 +#: company/models.py:519 company/templates/company/sidebar.html:25 +#: order/models.py:155 order/models.py:918 order/models.py:1213 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:983 +#: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:736 stock/models.py:2102 stock/models.py:2208 -#: stock/serializers.py:321 stock/serializers.py:459 stock/serializers.py:728 -#: stock/serializers.py:826 stock/serializers.py:958 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 #: templates/js/translated/order.js:2191 templates/js/translated/order.js:2687 -#: templates/js/translated/order.js:3606 templates/js/translated/order.js:4004 +#: templates/js/translated/order.js:3632 templates/js/translated/order.js:4030 #: templates/js/translated/stock.js:1307 templates/js/translated/stock.js:1916 msgid "Notes" msgstr "" -#: build/models.py:335 +#: build/models.py:325 msgid "Extra build notes" msgstr "" -#: build/models.py:773 +#: build/models.py:711 msgid "No build output specified" msgstr "" -#: build/models.py:776 +#: build/models.py:714 msgid "Build output is already completed" msgstr "" -#: build/models.py:779 +#: build/models.py:717 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1213 +#: build/models.py:1108 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1222 +#: build/models.py:1117 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1232 +#: build/models.py:1127 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1238 order/models.py:1413 +#: build/models.py:1133 order/models.py:1372 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1244 +#: build/models.py:1139 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1301 +#: build/models.py:1196 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1375 stock/templates/stock/item_base.html:177 +#: build/models.py:1265 stock/templates/stock/item_base.html:177 #: templates/InvenTree/search.html:137 templates/js/translated/build.js:2454 #: templates/navbar.html:38 msgid "Build" msgstr "" -#: build/models.py:1376 +#: build/models.py:1266 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1392 build/serializers.py:631 order/serializers.py:964 -#: order/serializers.py:982 stock/serializers.py:393 stock/serializers.py:666 -#: stock/serializers.py:784 stock/templates/stock/item_base.html:10 +#: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -904,17 +906,17 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1393 +#: build/models.py:1283 msgid "Source stock item" msgstr "" -#: build/models.py:1405 build/serializers.py:190 +#: build/models.py:1295 build/serializers.py:183 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:34 common/models.py:1624 -#: company/forms.py:38 company/templates/company/supplier_part.html:258 -#: order/models.py:935 order/models.py:1453 order/serializers.py:1103 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:121 -#: part/forms.py:137 part/forms.py:153 part/models.py:2776 +#: build/templates/build/detail.html:34 common/models.py:1536 +#: company/forms.py:36 company/templates/company/supplier_part.html:258 +#: order/models.py:909 order/models.py:1412 order/serializers.py:1134 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:91 +#: part/forms.py:106 part/forms.py:121 part/models.py:2559 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -923,7 +925,7 @@ msgstr "" #: report/templates/report/inventree_so_report.html:91 #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 -#: stock/serializers.py:282 stock/templates/stock/item_base.html:292 +#: stock/serializers.py:279 stock/templates/stock/item_base.html:292 #: stock/templates/stock/item_base.html:300 #: templates/js/translated/barcode.js:437 templates/js/translated/bom.js:689 #: templates/js/translated/bom.js:866 templates/js/translated/build.js:422 @@ -935,7 +937,7 @@ msgstr "" #: templates/js/translated/order.js:1925 templates/js/translated/order.js:2126 #: templates/js/translated/order.js:2821 templates/js/translated/order.js:3143 #: templates/js/translated/order.js:3231 templates/js/translated/order.js:3320 -#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3939 +#: templates/js/translated/order.js:3454 templates/js/translated/order.js:3965 #: templates/js/translated/part.js:967 templates/js/translated/part.js:1969 #: templates/js/translated/part.js:2200 templates/js/translated/part.js:2234 #: templates/js/translated/part.js:2312 templates/js/translated/stock.js:403 @@ -944,87 +946,88 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1406 +#: build/models.py:1296 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1414 +#: build/models.py:1304 msgid "Install into" msgstr "" -#: build/models.py:1415 +#: build/models.py:1305 msgid "Destination stock item" msgstr "" -#: build/serializers.py:135 build/serializers.py:660 +#: build/serializers.py:128 build/serializers.py:632 #: templates/js/translated/build.js:1163 msgid "Build Output" msgstr "" -#: build/serializers.py:147 +#: build/serializers.py:140 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:151 +#: build/serializers.py:144 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:155 +#: build/serializers.py:148 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:166 +#: build/serializers.py:159 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:191 +#: build/serializers.py:184 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:203 build/serializers.py:651 order/models.py:363 -#: order/serializers.py:289 order/serializers.py:435 part/serializers.py:588 -#: part/serializers.py:1084 stock/models.py:496 stock/models.py:1307 -#: stock/serializers.py:294 +#: build/serializers.py:198 build/serializers.py:623 order/models.py:363 +#: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 +#: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:210 +#: build/serializers.py:205 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:213 +#: build/serializers.py:208 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:227 order/serializers.py:448 order/serializers.py:1107 -#: stock/serializers.py:303 templates/js/translated/order.js:1186 +#: build/serializers.py:222 order/serializers.py:448 order/serializers.py:1138 +#: stock/serializers.py:297 templates/js/translated/order.js:1186 #: templates/js/translated/stock.js:238 templates/js/translated/stock.js:404 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:228 +#: build/serializers.py:223 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:241 +#: build/serializers.py:236 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:242 +#: build/serializers.py:237 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:276 stock/api.py:590 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" -#: build/serializers.py:329 build/serializers.py:402 +#: build/serializers.py:317 build/serializers.py:386 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:372 order/serializers.py:421 order/serializers.py:526 -#: stock/serializers.py:314 stock/serializers.py:454 stock/serializers.py:819 -#: stock/serializers.py:1060 stock/templates/stock/item_base.html:390 +#: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1036,12 +1039,12 @@ msgstr "" msgid "Location" msgstr "" -#: build/serializers.py:373 +#: build/serializers.py:357 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:379 build/templates/build/build_base.html:142 -#: build/templates/build/detail.html:62 order/models.py:663 +#: build/serializers.py:363 build/templates/build/build_base.html:142 +#: build/templates/build/detail.html:62 order/models.py:654 #: order/serializers.py:458 stock/templates/stock/item_base.html:423 #: templates/js/translated/barcode.js:182 templates/js/translated/build.js:2510 #: templates/js/translated/order.js:1320 templates/js/translated/order.js:1660 @@ -1050,133 +1053,133 @@ msgstr "" msgid "Status" msgstr "" -#: build/serializers.py:385 +#: build/serializers.py:369 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:386 +#: build/serializers.py:370 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:456 +#: build/serializers.py:439 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:457 +#: build/serializers.py:440 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:463 +#: build/serializers.py:446 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:464 +#: build/serializers.py:447 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:470 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:490 +#: build/serializers.py:471 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:500 templates/js/translated/build.js:195 +#: build/serializers.py:481 templates/js/translated/build.js:195 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:505 +#: build/serializers.py:486 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:506 +#: build/serializers.py:487 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:516 templates/js/translated/build.js:199 +#: build/serializers.py:497 templates/js/translated/build.js:199 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:525 +#: build/serializers.py:506 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:528 build/templates/build/build_base.html:95 +#: build/serializers.py:509 build/templates/build/build_base.html:95 msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:556 build/serializers.py:605 part/models.py:2900 -#: part/models.py:3039 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 +#: part/models.py:2811 msgid "BOM Item" msgstr "" -#: build/serializers.py:566 +#: build/serializers.py:545 msgid "Build output" msgstr "" -#: build/serializers.py:575 +#: build/serializers.py:553 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:622 +#: build/serializers.py:594 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:637 stock/serializers.py:673 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:694 order/serializers.py:1015 +#: build/serializers.py:667 order/serializers.py:1052 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:700 +#: build/serializers.py:673 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:707 +#: build/serializers.py:680 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:712 +#: build/serializers.py:685 msgid "This stock item has already been allocated to this build output" msgstr "" -#: build/serializers.py:739 order/serializers.py:1277 +#: build/serializers.py:708 order/serializers.py:1298 msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:791 +#: build/serializers.py:759 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:799 +#: build/serializers.py:767 msgid "Exclude Location" msgstr "" -#: build/serializers.py:800 +#: build/serializers.py:768 msgid "Exclude stock items from this selected location" msgstr "" -#: build/serializers.py:805 +#: build/serializers.py:773 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:806 +#: build/serializers.py:774 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:811 +#: build/serializers.py:779 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:812 +#: build/serializers.py:780 msgid "Allow allocation of substitute parts" msgstr "" -#: build/tasks.py:95 +#: build/tasks.py:96 msgid "Stock required for build order" msgstr "" @@ -1242,7 +1245,7 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:131 order/models.py:948 +#: build/templates/build/detail.html:131 order/models.py:922 #: order/templates/order/order_base.html:162 #: order/templates/order/sales_order_base.html:164 #: report/templates/report/inventree_build_order_base.html:126 @@ -1275,8 +1278,8 @@ msgid "Completed" msgstr "" #: build/templates/build/build_base.html:176 -#: build/templates/build/detail.html:94 order/models.py:1127 -#: order/models.py:1223 order/models.py:1357 +#: build/templates/build/detail.html:94 order/models.py:1100 +#: order/models.py:1185 order/models.py:1320 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 @@ -1317,7 +1320,7 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1063 +#: build/templates/build/detail.html:49 order/models.py:1034 #: templates/js/translated/order.js:1321 templates/js/translated/order.js:2029 msgid "Destination" msgstr "" @@ -1476,7 +1479,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -1509,945 +1512,945 @@ msgstr "" msgid "Completed Outputs" msgstr "" -#: build/views.py:80 +#: build/views.py:59 msgid "Delete Build Order" msgstr "" -#: common/files.py:66 +#: common/files.py:62 msgid "Unsupported file format: {ext.upper()}" msgstr "" -#: common/files.py:68 +#: common/files.py:64 msgid "Error reading file (invalid encoding)" msgstr "" -#: common/files.py:73 +#: common/files.py:69 msgid "Error reading file (invalid format)" msgstr "" -#: common/files.py:75 +#: common/files.py:71 msgid "Error reading file (incorrect dimension)" msgstr "" -#: common/files.py:77 +#: common/files.py:73 msgid "Error reading file (data could be corrupted)" msgstr "" -#: common/forms.py:31 +#: common/forms.py:29 msgid "File" msgstr "" -#: common/forms.py:32 +#: common/forms.py:30 msgid "Select file to upload" msgstr "" -#: common/forms.py:47 +#: common/forms.py:44 msgid "{name.title()} File" msgstr "" -#: common/forms.py:48 +#: common/forms.py:45 #, python-brace-format msgid "Select {name} file to upload" msgstr "" -#: common/models.py:394 +#: common/models.py:365 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:396 +#: common/models.py:367 msgid "Settings value" msgstr "" -#: common/models.py:437 +#: common/models.py:408 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:457 +#: common/models.py:425 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:468 +#: common/models.py:436 msgid "Value must be an integer value" msgstr "" -#: common/models.py:517 +#: common/models.py:481 msgid "Key string must be unique" msgstr "" -#: common/models.py:739 +#: common/models.py:665 msgid "No group" msgstr "" -#: common/models.py:781 +#: common/models.py:704 msgid "Restart required" msgstr "" -#: common/models.py:782 +#: common/models.py:705 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:789 +#: common/models.py:712 msgid "Server Instance Name" msgstr "" -#: common/models.py:791 +#: common/models.py:714 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:795 +#: common/models.py:718 msgid "Use instance name" msgstr "" -#: common/models.py:796 +#: common/models.py:719 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:802 +#: common/models.py:725 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:803 +#: common/models.py:726 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:809 company/models.py:92 company/models.py:93 +#: common/models.py:732 company/models.py:92 company/models.py:93 msgid "Company name" msgstr "" -#: common/models.py:810 +#: common/models.py:733 msgid "Internal company name" msgstr "" -#: common/models.py:815 +#: common/models.py:738 msgid "Base URL" msgstr "" -#: common/models.py:816 +#: common/models.py:739 msgid "Base URL for server instance" msgstr "" -#: common/models.py:822 +#: common/models.py:745 msgid "Default Currency" msgstr "" -#: common/models.py:823 +#: common/models.py:746 msgid "Default currency" msgstr "" -#: common/models.py:829 +#: common/models.py:752 msgid "Download from URL" msgstr "" -#: common/models.py:830 +#: common/models.py:753 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:836 templates/InvenTree/settings/sidebar.html:33 +#: common/models.py:759 templates/InvenTree/settings/sidebar.html:33 msgid "Barcode Support" msgstr "" -#: common/models.py:837 +#: common/models.py:760 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:843 +#: common/models.py:766 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:844 +#: common/models.py:767 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:850 +#: common/models.py:773 msgid "IPN Regex" msgstr "" -#: common/models.py:851 +#: common/models.py:774 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:855 +#: common/models.py:778 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:856 +#: common/models.py:779 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:862 +#: common/models.py:785 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:863 +#: common/models.py:786 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:869 +#: common/models.py:792 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:870 +#: common/models.py:793 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:876 +#: common/models.py:799 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:877 +#: common/models.py:800 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:883 +#: common/models.py:806 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:884 +#: common/models.py:807 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:890 +#: common/models.py:813 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:891 +#: common/models.py:814 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:897 part/models.py:2581 report/models.py:175 +#: common/models.py:820 part/models.py:2372 report/models.py:157 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:444 msgid "Template" msgstr "" -#: common/models.py:898 +#: common/models.py:821 msgid "Parts are templates by default" msgstr "" -#: common/models.py:904 part/models.py:946 templates/js/translated/bom.js:1390 +#: common/models.py:827 part/models.py:884 templates/js/translated/bom.js:1390 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:460 msgid "Assembly" msgstr "" -#: common/models.py:905 +#: common/models.py:828 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:911 part/models.py:952 +#: common/models.py:834 part/models.py:890 #: templates/js/translated/table_filters.js:464 msgid "Component" msgstr "" -#: common/models.py:912 +#: common/models.py:835 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:918 part/models.py:963 +#: common/models.py:841 part/models.py:901 msgid "Purchaseable" msgstr "" -#: common/models.py:919 +#: common/models.py:842 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:925 part/models.py:968 +#: common/models.py:848 part/models.py:906 #: templates/js/translated/table_filters.js:472 msgid "Salable" msgstr "" -#: common/models.py:926 +#: common/models.py:849 msgid "Parts are salable by default" msgstr "" -#: common/models.py:932 part/models.py:958 +#: common/models.py:855 part/models.py:896 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:476 msgid "Trackable" msgstr "" -#: common/models.py:933 +#: common/models.py:856 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:939 part/models.py:978 +#: common/models.py:862 part/models.py:916 #: part/templates/part/part_base.html:151 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:940 +#: common/models.py:863 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:946 +#: common/models.py:869 msgid "Show Import in Views" msgstr "" -#: common/models.py:947 +#: common/models.py:870 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:953 +#: common/models.py:876 msgid "Show Price in Forms" msgstr "" -#: common/models.py:954 +#: common/models.py:877 msgid "Display part price in some forms" msgstr "" -#: common/models.py:965 +#: common/models.py:888 msgid "Show Price in BOM" msgstr "" -#: common/models.py:966 +#: common/models.py:889 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:977 +#: common/models.py:900 msgid "Show Price History" msgstr "" -#: common/models.py:978 +#: common/models.py:901 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:984 +#: common/models.py:907 msgid "Show related parts" msgstr "" -#: common/models.py:985 +#: common/models.py:908 msgid "Display related parts for a part" msgstr "" -#: common/models.py:991 +#: common/models.py:914 msgid "Create initial stock" msgstr "" -#: common/models.py:992 +#: common/models.py:915 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:998 +#: common/models.py:921 msgid "Internal Prices" msgstr "" -#: common/models.py:999 +#: common/models.py:922 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1005 +#: common/models.py:928 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:1006 +#: common/models.py:929 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:1012 +#: common/models.py:935 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1013 +#: common/models.py:936 msgid "Format to display the part name" msgstr "" -#: common/models.py:1020 +#: common/models.py:943 msgid "Enable Reports" msgstr "" -#: common/models.py:1021 +#: common/models.py:944 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1027 templates/stats.html:25 +#: common/models.py:950 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1028 +#: common/models.py:951 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1034 +#: common/models.py:957 msgid "Page Size" msgstr "" -#: common/models.py:1035 +#: common/models.py:958 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1045 +#: common/models.py:968 msgid "Test Reports" msgstr "" -#: common/models.py:1046 +#: common/models.py:969 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1052 +#: common/models.py:975 msgid "Batch Code Template" msgstr "" -#: common/models.py:1053 +#: common/models.py:976 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1058 +#: common/models.py:981 msgid "Stock Expiry" msgstr "" -#: common/models.py:1059 +#: common/models.py:982 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1065 +#: common/models.py:988 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1066 +#: common/models.py:989 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1072 +#: common/models.py:995 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1073 +#: common/models.py:996 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1075 +#: common/models.py:998 msgid "days" msgstr "" -#: common/models.py:1080 +#: common/models.py:1003 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1081 +#: common/models.py:1004 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1087 +#: common/models.py:1010 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1088 +#: common/models.py:1011 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1094 +#: common/models.py:1017 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:1095 +#: common/models.py:1018 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:1100 +#: common/models.py:1023 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:1101 +#: common/models.py:1024 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:1105 +#: common/models.py:1028 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:1106 +#: common/models.py:1029 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:1111 +#: common/models.py:1034 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1112 +#: common/models.py:1035 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1118 +#: common/models.py:1041 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:1119 +#: common/models.py:1042 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:1125 +#: common/models.py:1048 msgid "Enable password forgot" msgstr "" -#: common/models.py:1126 +#: common/models.py:1049 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1132 +#: common/models.py:1055 msgid "Enable registration" msgstr "" -#: common/models.py:1133 +#: common/models.py:1056 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1139 +#: common/models.py:1062 msgid "Enable SSO" msgstr "" -#: common/models.py:1140 +#: common/models.py:1063 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1146 +#: common/models.py:1069 msgid "Email required" msgstr "" -#: common/models.py:1147 +#: common/models.py:1070 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1153 +#: common/models.py:1076 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1154 +#: common/models.py:1077 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1160 +#: common/models.py:1083 msgid "Mail twice" msgstr "" -#: common/models.py:1161 +#: common/models.py:1084 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1167 +#: common/models.py:1090 msgid "Password twice" msgstr "" -#: common/models.py:1168 +#: common/models.py:1091 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1174 +#: common/models.py:1097 msgid "Group on signup" msgstr "" -#: common/models.py:1175 +#: common/models.py:1098 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1181 +#: common/models.py:1104 msgid "Enforce MFA" msgstr "" -#: common/models.py:1182 +#: common/models.py:1105 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1188 +#: common/models.py:1111 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1189 +#: common/models.py:1112 msgid "Check that all plugins are installed on startup - enable in container enviroments" msgstr "" -#: common/models.py:1197 +#: common/models.py:1120 msgid "Enable URL integration" msgstr "" -#: common/models.py:1198 +#: common/models.py:1121 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1205 +#: common/models.py:1128 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1206 +#: common/models.py:1129 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1213 +#: common/models.py:1136 msgid "Enable app integration" msgstr "" -#: common/models.py:1214 +#: common/models.py:1137 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1221 +#: common/models.py:1144 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1222 +#: common/models.py:1145 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1229 +#: common/models.py:1152 msgid "Enable event integration" msgstr "" -#: common/models.py:1230 +#: common/models.py:1153 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1245 common/models.py:1574 +#: common/models.py:1170 common/models.py:1492 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1276 +#: common/models.py:1192 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1277 +#: common/models.py:1193 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1283 +#: common/models.py:1199 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1284 +#: common/models.py:1200 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1290 +#: common/models.py:1206 msgid "Show latest parts" msgstr "" -#: common/models.py:1291 +#: common/models.py:1207 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1297 +#: common/models.py:1213 msgid "Recent Part Count" msgstr "" -#: common/models.py:1298 +#: common/models.py:1214 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1304 +#: common/models.py:1220 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1305 +#: common/models.py:1221 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1311 +#: common/models.py:1227 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1312 +#: common/models.py:1228 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1318 +#: common/models.py:1234 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1319 +#: common/models.py:1235 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1325 +#: common/models.py:1241 msgid "Show low stock" msgstr "" -#: common/models.py:1326 +#: common/models.py:1242 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1332 +#: common/models.py:1248 msgid "Show depleted stock" msgstr "" -#: common/models.py:1333 +#: common/models.py:1249 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1339 +#: common/models.py:1255 msgid "Show needed stock" msgstr "" -#: common/models.py:1340 +#: common/models.py:1256 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1346 +#: common/models.py:1262 msgid "Show expired stock" msgstr "" -#: common/models.py:1347 +#: common/models.py:1263 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1353 +#: common/models.py:1269 msgid "Show stale stock" msgstr "" -#: common/models.py:1354 +#: common/models.py:1270 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1360 +#: common/models.py:1276 msgid "Show pending builds" msgstr "" -#: common/models.py:1361 +#: common/models.py:1277 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1367 +#: common/models.py:1283 msgid "Show overdue builds" msgstr "" -#: common/models.py:1368 +#: common/models.py:1284 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1374 +#: common/models.py:1290 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1375 +#: common/models.py:1291 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1381 +#: common/models.py:1297 msgid "Show overdue POs" msgstr "" -#: common/models.py:1382 +#: common/models.py:1298 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1388 +#: common/models.py:1304 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1389 +#: common/models.py:1305 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1395 +#: common/models.py:1311 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1396 +#: common/models.py:1312 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1401 +#: common/models.py:1317 msgid "Enable label printing" msgstr "" -#: common/models.py:1402 +#: common/models.py:1318 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1408 +#: common/models.py:1324 msgid "Inline label display" msgstr "" -#: common/models.py:1409 +#: common/models.py:1325 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1415 +#: common/models.py:1331 msgid "Inline report display" msgstr "" -#: common/models.py:1416 +#: common/models.py:1332 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1422 +#: common/models.py:1338 msgid "Search Parts" msgstr "" -#: common/models.py:1423 +#: common/models.py:1339 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1429 +#: common/models.py:1345 msgid "Seach Supplier Parts" msgstr "" -#: common/models.py:1430 +#: common/models.py:1346 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:1436 +#: common/models.py:1352 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:1437 +#: common/models.py:1353 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:1443 +#: common/models.py:1359 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1444 +#: common/models.py:1360 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:1450 +#: common/models.py:1366 msgid "Search Categories" msgstr "" -#: common/models.py:1451 +#: common/models.py:1367 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1457 +#: common/models.py:1373 msgid "Search Stock" msgstr "" -#: common/models.py:1458 +#: common/models.py:1374 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1464 +#: common/models.py:1380 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:1465 +#: common/models.py:1381 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:1471 +#: common/models.py:1387 msgid "Search Locations" msgstr "" -#: common/models.py:1472 +#: common/models.py:1388 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1478 +#: common/models.py:1394 msgid "Search Companies" msgstr "" -#: common/models.py:1479 +#: common/models.py:1395 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1485 +#: common/models.py:1401 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1486 +#: common/models.py:1402 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1492 +#: common/models.py:1408 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:1493 +#: common/models.py:1409 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:1499 +#: common/models.py:1415 msgid "Search Sales Orders" msgstr "" -#: common/models.py:1500 +#: common/models.py:1416 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:1506 +#: common/models.py:1422 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:1507 +#: common/models.py:1423 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:1513 +#: common/models.py:1429 msgid "Search Preview Results" msgstr "" -#: common/models.py:1514 +#: common/models.py:1430 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:1520 +#: common/models.py:1436 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1521 +#: common/models.py:1437 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1527 +#: common/models.py:1443 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1528 +#: common/models.py:1444 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1534 +#: common/models.py:1450 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1535 +#: common/models.py:1451 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1541 +#: common/models.py:1457 msgid "Date Format" msgstr "" -#: common/models.py:1542 +#: common/models.py:1458 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1556 part/templates/part/detail.html:39 +#: common/models.py:1472 part/templates/part/detail.html:39 msgid "Part Scheduling" msgstr "" -#: common/models.py:1557 +#: common/models.py:1473 msgid "Display part scheduling information" msgstr "" -#: common/models.py:1625 company/forms.py:39 +#: common/models.py:1537 company/forms.py:37 msgid "Price break quantity" msgstr "" -#: common/models.py:1632 company/serializers.py:285 -#: company/templates/company/supplier_part.html:263 order/models.py:975 +#: common/models.py:1544 company/serializers.py:288 +#: company/templates/company/supplier_part.html:263 order/models.py:949 #: templates/js/translated/part.js:998 templates/js/translated/part.js:1974 msgid "Price" msgstr "" -#: common/models.py:1633 +#: common/models.py:1545 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1793 common/models.py:1930 +#: common/models.py:1705 common/models.py:1883 msgid "Endpoint" msgstr "" -#: common/models.py:1794 +#: common/models.py:1706 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1803 +#: common/models.py:1715 msgid "Name for this webhook" msgstr "" -#: common/models.py:1808 part/models.py:973 plugin/models.py:105 +#: common/models.py:1720 part/models.py:911 plugin/models.py:99 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:308 @@ -2455,107 +2458,107 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:1809 +#: common/models.py:1721 msgid "Is this webhook active" msgstr "" -#: common/models.py:1823 +#: common/models.py:1735 msgid "Token" msgstr "" -#: common/models.py:1824 +#: common/models.py:1736 msgid "Token for access" msgstr "" -#: common/models.py:1831 +#: common/models.py:1743 msgid "Secret" msgstr "" -#: common/models.py:1832 +#: common/models.py:1744 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1897 +#: common/models.py:1850 msgid "Message ID" msgstr "" -#: common/models.py:1898 +#: common/models.py:1851 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1906 +#: common/models.py:1859 msgid "Host" msgstr "" -#: common/models.py:1907 +#: common/models.py:1860 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1914 +#: common/models.py:1867 msgid "Header" msgstr "" -#: common/models.py:1915 +#: common/models.py:1868 msgid "Header of this message" msgstr "" -#: common/models.py:1921 +#: common/models.py:1874 msgid "Body" msgstr "" -#: common/models.py:1922 +#: common/models.py:1875 msgid "Body of this message" msgstr "" -#: common/models.py:1931 +#: common/models.py:1884 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1936 +#: common/models.py:1889 msgid "Worked on" msgstr "" -#: common/models.py:1937 +#: common/models.py:1890 msgid "Was the work on this message finished?" msgstr "" -#: common/views.py:90 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:115 part/views.py:194 +#: common/views.py:87 order/templates/order/purchase_order_detail.html:23 +#: order/views.py:102 part/views.py:193 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" -#: common/views.py:91 order/views.py:116 +#: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:194 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" -#: common/views.py:92 +#: common/views.py:89 msgid "Match Items" msgstr "" -#: common/views.py:437 +#: common/views.py:422 msgid "Fields matching failed" msgstr "" -#: common/views.py:492 +#: common/views.py:483 msgid "Parts imported" msgstr "" -#: common/views.py:514 order/templates/order/order_wizard/match_parts.html:19 +#: common/views.py:507 order/templates/order/order_wizard/match_parts.html:19 #: part/templates/part/import_wizard/match_references.html:19 #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" msgstr "" -#: company/forms.py:20 part/forms.py:41 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:21 part/forms.py:42 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "" @@ -2614,7 +2617,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:131 part/models.py:865 +#: company/models.py:131 part/models.py:805 msgid "Image" msgstr "" @@ -2642,9 +2645,9 @@ msgstr "" msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:144 company/serializers.py:291 -#: company/templates/company/company_base.html:106 part/serializers.py:151 -#: part/serializers.py:183 stock/serializers.py:168 +#: company/models.py:144 company/serializers.py:294 +#: company/templates/company/company_base.html:106 part/serializers.py:137 +#: part/serializers.py:168 stock/serializers.py:162 msgid "Currency" msgstr "" @@ -2652,16 +2655,16 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:309 company/models.py:540 stock/models.py:607 +#: company/models.py:244 company/models.py:477 stock/models.py:584 #: stock/templates/stock/item_base.html:148 templates/js/translated/bom.js:542 msgid "Base Part" msgstr "" -#: company/models.py:313 company/models.py:544 +#: company/models.py:248 company/models.py:481 msgid "Select part" msgstr "" -#: company/models.py:324 company/templates/company/company_base.html:76 +#: company/models.py:259 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 #: company/templates/company/supplier_part.html:103 #: stock/templates/stock/item_base.html:212 @@ -2673,11 +2676,11 @@ msgstr "" msgid "Manufacturer" msgstr "" -#: company/models.py:325 templates/js/translated/part.js:236 +#: company/models.py:260 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" -#: company/models.py:331 company/templates/company/manufacturer_part.html:101 +#: company/models.py:266 company/templates/company/manufacturer_part.html:101 #: company/templates/company/supplier_part.html:111 #: templates/js/translated/company.js:255 #: templates/js/translated/company.js:487 @@ -2687,58 +2690,58 @@ msgstr "" msgid "MPN" msgstr "" -#: company/models.py:332 templates/js/translated/part.js:247 +#: company/models.py:267 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:338 +#: company/models.py:273 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:344 +#: company/models.py:279 msgid "Manufacturer part description" msgstr "" -#: company/models.py:391 company/models.py:414 company/models.py:563 +#: company/models.py:324 company/models.py:348 company/models.py:500 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:222 msgid "Manufacturer Part" msgstr "" -#: company/models.py:421 +#: company/models.py:355 msgid "Parameter name" msgstr "" -#: company/models.py:427 +#: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2195 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" msgstr "" -#: company/models.py:428 +#: company/models.py:362 msgid "Parameter value" msgstr "" -#: company/models.py:434 part/models.py:940 part/models.py:2549 +#: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 #: templates/InvenTree/settings/settings.html:332 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" -#: company/models.py:435 +#: company/models.py:369 msgid "Parameter units" msgstr "" -#: company/models.py:507 +#: company/models.py:445 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:550 company/templates/company/company_base.html:81 -#: company/templates/company/supplier_part.html:87 order/models.py:310 +#: company/models.py:487 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:87 order/models.py:303 #: order/templates/order/order_base.html:112 part/bom.py:237 part/bom.py:265 #: stock/templates/stock/item_base.html:229 #: templates/js/translated/company.js:254 @@ -2749,67 +2752,67 @@ msgstr "" msgid "Supplier" msgstr "" -#: company/models.py:551 templates/js/translated/part.js:217 +#: company/models.py:488 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" -#: company/models.py:556 company/templates/company/supplier_part.html:97 +#: company/models.py:493 company/templates/company/supplier_part.html:97 #: part/bom.py:238 part/bom.py:266 templates/js/translated/company.js:253 #: templates/js/translated/order.js:1894 templates/js/translated/part.js:227 #: templates/js/translated/part.js:942 msgid "SKU" msgstr "" -#: company/models.py:557 templates/js/translated/part.js:228 +#: company/models.py:494 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:564 +#: company/models.py:501 msgid "Select manufacturer part" msgstr "" -#: company/models.py:570 +#: company/models.py:507 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:576 +#: company/models.py:513 msgid "Supplier part description" msgstr "" -#: company/models.py:581 company/templates/company/supplier_part.html:125 -#: part/models.py:2788 part/templates/part/upload_bom.html:59 +#: company/models.py:518 company/templates/company/supplier_part.html:125 +#: part/models.py:2571 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 -#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:398 +#: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" msgstr "" -#: company/models.py:585 part/models.py:1858 +#: company/models.py:522 part/models.py:1688 msgid "base cost" msgstr "" -#: company/models.py:585 part/models.py:1858 +#: company/models.py:522 part/models.py:1688 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:587 company/templates/company/supplier_part.html:118 -#: stock/models.py:631 stock/templates/stock/item_base.html:245 +#: company/models.py:524 company/templates/company/supplier_part.html:118 +#: stock/models.py:608 stock/templates/stock/item_base.html:245 #: templates/js/translated/company.js:967 templates/js/translated/stock.js:1912 msgid "Packaging" msgstr "" -#: company/models.py:587 +#: company/models.py:524 msgid "Part packaging" msgstr "" -#: company/models.py:589 part/models.py:1860 +#: company/models.py:526 part/models.py:1690 msgid "multiple" msgstr "" -#: company/models.py:589 +#: company/models.py:526 msgid "Order multiple" msgstr "" -#: company/models.py:713 +#: company/models.py:649 msgid "last updated" msgstr "" @@ -2864,9 +2867,9 @@ msgstr "" msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:86 order/models.py:658 -#: order/templates/order/sales_order_base.html:116 stock/models.py:650 -#: stock/models.py:651 stock/serializers.py:714 +#: company/templates/company/company_base.html:86 order/models.py:649 +#: order/templates/order/sales_order_base.html:116 stock/models.py:627 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -2946,7 +2949,7 @@ msgstr "" #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:198 #: templates/InvenTree/settings/sidebar.html:47 #: templates/js/translated/search.js:275 templates/navbar.html:50 -#: users/models.py:43 +#: users/models.py:41 msgid "Purchase Orders" msgstr "" @@ -2969,7 +2972,7 @@ msgstr "" #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:218 #: templates/InvenTree/settings/sidebar.html:49 #: templates/js/translated/search.js:299 templates/navbar.html:61 -#: users/models.py:44 +#: users/models.py:42 msgid "Sales Orders" msgstr "" @@ -2996,7 +2999,7 @@ msgstr "" msgid "Supplier List" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:47 +#: company/templates/company/manufacturer_part.html:15 company/views.py:45 #: part/templates/part/prices.html:170 templates/InvenTree/search.html:179 #: templates/navbar.html:49 msgid "Manufacturers" @@ -3029,7 +3032,7 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:41 +#: company/templates/company/supplier_part.html:15 company/views.py:39 #: part/templates/part/part_sidebar.html:35 part/templates/part/prices.html:166 #: templates/InvenTree/search.html:189 templates/navbar.html:48 msgid "Suppliers" @@ -3044,7 +3047,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:183 #: part/templates/part/detail.html:364 part/templates/part/detail.html:394 #: templates/js/translated/forms.js:439 templates/js/translated/helpers.js:32 -#: users/models.py:220 +#: users/models.py:219 msgid "Delete" msgstr "" @@ -3088,7 +3091,7 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:615 +#: company/templates/company/supplier_part.html:24 stock/models.py:592 #: stock/templates/stock/item_base.html:238 #: templates/js/translated/company.js:907 templates/js/translated/order.js:884 #: templates/js/translated/stock.js:1869 @@ -3207,179 +3210,179 @@ msgstr "" #: stock/templates/stock/location.html:173 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:153 templates/js/translated/search.js:223 -#: templates/js/translated/stock.js:2307 users/models.py:41 +#: templates/js/translated/stock.js:2307 users/models.py:39 msgid "Stock Items" msgstr "" -#: company/views.py:42 +#: company/views.py:40 msgid "New Supplier" msgstr "" -#: company/views.py:48 +#: company/views.py:46 msgid "New Manufacturer" msgstr "" -#: company/views.py:53 templates/InvenTree/search.html:209 +#: company/views.py:51 templates/InvenTree/search.html:209 #: templates/navbar.html:60 msgid "Customers" msgstr "" -#: company/views.py:54 +#: company/views.py:52 msgid "New Customer" msgstr "" -#: company/views.py:61 templates/js/translated/search.js:252 +#: company/views.py:59 templates/js/translated/search.js:252 msgid "Companies" msgstr "" -#: company/views.py:62 +#: company/views.py:60 msgid "New Company" msgstr "" -#: company/views.py:121 part/views.py:579 +#: company/views.py:112 part/views.py:578 msgid "Download Image" msgstr "" -#: company/views.py:150 part/views.py:611 +#: company/views.py:139 part/views.py:608 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:157 part/views.py:618 +#: company/views.py:146 part/views.py:615 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:166 part/views.py:627 +#: company/views.py:155 part/views.py:624 msgid "Supplied URL is not a valid image file" msgstr "" -#: label/models.py:105 +#: label/models.py:102 msgid "Label name" msgstr "" -#: label/models.py:112 +#: label/models.py:109 msgid "Label description" msgstr "" -#: label/models.py:119 +#: label/models.py:116 msgid "Label" msgstr "" -#: label/models.py:120 +#: label/models.py:117 msgid "Label template file" msgstr "" -#: label/models.py:126 report/models.py:286 +#: label/models.py:123 report/models.py:253 msgid "Enabled" msgstr "" -#: label/models.py:127 +#: label/models.py:124 msgid "Label template is enabled" msgstr "" -#: label/models.py:132 +#: label/models.py:129 msgid "Width [mm]" msgstr "" -#: label/models.py:133 +#: label/models.py:130 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:139 +#: label/models.py:136 msgid "Height [mm]" msgstr "" -#: label/models.py:140 +#: label/models.py:137 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:146 report/models.py:279 +#: label/models.py:143 report/models.py:246 msgid "Filename Pattern" msgstr "" -#: label/models.py:147 +#: label/models.py:144 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:250 +#: label/models.py:233 msgid "Query filters (comma-separated list of key=value pairs)," msgstr "" -#: label/models.py:251 label/models.py:295 label/models.py:327 -#: report/models.py:310 report/models.py:447 report/models.py:486 +#: label/models.py:234 label/models.py:274 label/models.py:302 +#: report/models.py:279 report/models.py:410 report/models.py:449 msgid "Filters" msgstr "" -#: label/models.py:294 +#: label/models.py:273 msgid "Query filters (comma-separated list of key=value pairs" msgstr "" -#: label/models.py:326 +#: label/models.py:301 msgid "Part query filters (comma-separated value of key=value pairs)" msgstr "" -#: order/models.py:137 +#: order/models.py:133 msgid "Order description" msgstr "" -#: order/models.py:139 order/models.py:1274 +#: order/models.py:135 order/models.py:1236 msgid "Link to external page" msgstr "" -#: order/models.py:147 +#: order/models.py:143 msgid "Created By" msgstr "" -#: order/models.py:154 +#: order/models.py:150 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:159 +#: order/models.py:155 msgid "Order notes" msgstr "" -#: order/models.py:296 order/models.py:648 +#: order/models.py:289 order/models.py:639 msgid "Order reference" msgstr "" -#: order/models.py:301 order/models.py:663 +#: order/models.py:294 order/models.py:654 msgid "Purchase order status" msgstr "" -#: order/models.py:311 +#: order/models.py:304 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:314 order/templates/order/order_base.html:124 +#: order/models.py:307 order/templates/order/order_base.html:124 #: templates/js/translated/order.js:1652 msgid "Supplier Reference" msgstr "" -#: order/models.py:314 +#: order/models.py:307 msgid "Supplier order reference code" msgstr "" -#: order/models.py:321 +#: order/models.py:314 msgid "received by" msgstr "" -#: order/models.py:326 +#: order/models.py:319 msgid "Issue Date" msgstr "" -#: order/models.py:327 +#: order/models.py:320 msgid "Date order was issued" msgstr "" -#: order/models.py:332 +#: order/models.py:325 msgid "Target Delivery Date" msgstr "" -#: order/models.py:333 +#: order/models.py:326 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:339 +#: order/models.py:332 msgid "Date order was completed" msgstr "" @@ -3387,94 +3390,94 @@ msgstr "" msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:514 +#: order/models.py:512 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:659 +#: order/models.py:650 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:665 +#: order/models.py:656 msgid "Customer Reference " msgstr "" -#: order/models.py:665 +#: order/models.py:656 msgid "Customer order reference code" msgstr "" -#: order/models.py:670 +#: order/models.py:661 msgid "Target date for order completion. Order will be overdue after this date." msgstr "" -#: order/models.py:673 order/models.py:1228 +#: order/models.py:664 order/models.py:1190 #: templates/js/translated/order.js:2505 templates/js/translated/order.js:2656 msgid "Shipment Date" msgstr "" -#: order/models.py:680 +#: order/models.py:671 msgid "shipped by" msgstr "" -#: order/models.py:746 +#: order/models.py:726 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:750 +#: order/models.py:730 msgid "Only a pending order can be marked as complete" msgstr "" -#: order/models.py:753 +#: order/models.py:733 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:756 +#: order/models.py:736 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:936 +#: order/models.py:910 msgid "Item quantity" msgstr "" -#: order/models.py:942 +#: order/models.py:916 msgid "Line item reference" msgstr "" -#: order/models.py:944 +#: order/models.py:918 msgid "Line item notes" msgstr "" -#: order/models.py:949 +#: order/models.py:923 msgid "Target shipping date for this line item" msgstr "" -#: order/models.py:967 +#: order/models.py:941 msgid "Context" msgstr "" -#: order/models.py:968 +#: order/models.py:942 msgid "Additional context for this line" msgstr "" -#: order/models.py:976 +#: order/models.py:950 msgid "Unit price" msgstr "" -#: order/models.py:1009 +#: order/models.py:980 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1016 +#: order/models.py:988 msgid "deleted" msgstr "" -#: order/models.py:1022 order/models.py:1104 order/models.py:1126 -#: order/models.py:1222 order/models.py:1357 +#: order/models.py:994 order/models.py:1074 order/models.py:1099 +#: order/models.py:1184 order/models.py:1320 #: templates/js/translated/order.js:3112 msgid "Order" msgstr "" -#: order/models.py:1023 order/models.py:1104 +#: order/models.py:995 order/models.py:1074 #: order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:76 @@ -3485,182 +3488,182 @@ msgstr "" msgid "Purchase Order" msgstr "" -#: order/models.py:1042 +#: order/models.py:1013 msgid "Supplier part" msgstr "" -#: order/models.py:1049 order/templates/order/order_base.html:169 +#: order/models.py:1020 order/templates/order/order_base.html:169 #: templates/js/translated/order.js:1318 templates/js/translated/order.js:2009 #: templates/js/translated/part.js:993 templates/js/translated/part.js:1020 #: templates/js/translated/table_filters.js:330 msgid "Received" msgstr "" -#: order/models.py:1050 +#: order/models.py:1021 msgid "Number of items received" msgstr "" -#: order/models.py:1057 part/templates/part/prices.html:179 stock/models.py:745 -#: stock/serializers.py:159 stock/templates/stock/item_base.html:191 +#: order/models.py:1028 part/templates/part/prices.html:179 stock/models.py:722 +#: stock/serializers.py:153 stock/templates/stock/item_base.html:191 #: templates/js/translated/stock.js:1900 msgid "Purchase Price" msgstr "" -#: order/models.py:1058 +#: order/models.py:1029 msgid "Unit purchase price" msgstr "" -#: order/models.py:1066 +#: order/models.py:1037 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1136 part/templates/part/part_pricing.html:112 +#: order/models.py:1109 part/templates/part/part_pricing.html:112 #: part/templates/part/prices.html:119 part/templates/part/prices.html:288 msgid "Sale Price" msgstr "" -#: order/models.py:1137 +#: order/models.py:1110 msgid "Unit sale price" msgstr "" -#: order/models.py:1142 +#: order/models.py:1115 msgid "Shipped quantity" msgstr "" -#: order/models.py:1229 +#: order/models.py:1191 msgid "Date of shipment" msgstr "" -#: order/models.py:1236 +#: order/models.py:1198 msgid "Checked By" msgstr "" -#: order/models.py:1237 +#: order/models.py:1199 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1245 +#: order/models.py:1207 msgid "Shipment number" msgstr "" -#: order/models.py:1252 +#: order/models.py:1214 msgid "Shipment notes" msgstr "" -#: order/models.py:1259 +#: order/models.py:1221 msgid "Tracking Number" msgstr "" -#: order/models.py:1260 +#: order/models.py:1222 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1267 +#: order/models.py:1229 msgid "Invoice Number" msgstr "" -#: order/models.py:1268 +#: order/models.py:1230 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1285 +#: order/models.py:1248 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1288 +#: order/models.py:1251 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1395 order/models.py:1397 +#: order/models.py:1354 order/models.py:1356 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1401 +#: order/models.py:1360 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1403 +#: order/models.py:1362 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1406 +#: order/models.py:1365 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1410 +#: order/models.py:1369 msgid "StockItem is over-allocated" msgstr "" -#: order/models.py:1416 order/serializers.py:1008 +#: order/models.py:1375 order/serializers.py:1045 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1419 +#: order/models.py:1378 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1420 +#: order/models.py:1379 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1428 +#: order/models.py:1387 msgid "Line" msgstr "" -#: order/models.py:1436 order/serializers.py:1118 order/serializers.py:1246 +#: order/models.py:1395 order/serializers.py:1149 order/serializers.py:1273 #: templates/js/translated/model_renderers.js:301 msgid "Shipment" msgstr "" -#: order/models.py:1437 +#: order/models.py:1396 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1449 templates/InvenTree/notifications/notifications.html:70 +#: order/models.py:1408 templates/InvenTree/notifications/notifications.html:70 msgid "Item" msgstr "" -#: order/models.py:1450 +#: order/models.py:1409 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1453 +#: order/models.py:1412 msgid "Enter stock allocation quantity" msgstr "" -#: order/serializers.py:69 +#: order/serializers.py:68 msgid "Price currency" msgstr "" -#: order/serializers.py:198 +#: order/serializers.py:192 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:296 +#: order/serializers.py:287 msgid "Order is not open" msgstr "" -#: order/serializers.py:320 +#: order/serializers.py:311 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:334 +#: order/serializers.py:330 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:339 +#: order/serializers.py:335 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:345 +#: order/serializers.py:341 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:346 +#: order/serializers.py:342 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:406 order/serializers.py:1083 +#: order/serializers.py:406 order/serializers.py:1117 msgid "Line Item" msgstr "" @@ -3668,7 +3671,7 @@ msgstr "" msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:422 order/serializers.py:527 +#: order/serializers.py:422 order/serializers.py:526 msgid "Select destination location for received items" msgstr "" @@ -3688,59 +3691,59 @@ msgstr "" msgid "Unique identifier field" msgstr "" -#: order/serializers.py:480 +#: order/serializers.py:477 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:499 +#: order/serializers.py:500 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:539 +#: order/serializers.py:542 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:556 +#: order/serializers.py:559 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:567 +#: order/serializers.py:570 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:842 +#: order/serializers.py:866 msgid "Sale price currency" msgstr "" -#: order/serializers.py:917 +#: order/serializers.py:947 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:973 order/serializers.py:1095 +#: order/serializers.py:1006 order/serializers.py:1126 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:995 +#: order/serializers.py:1028 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1108 +#: order/serializers.py:1139 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1132 order/serializers.py:1257 +#: order/serializers.py:1161 order/serializers.py:1281 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1135 order/serializers.py:1260 +#: order/serializers.py:1164 order/serializers.py:1284 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1187 +#: order/serializers.py:1214 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1197 +#: order/serializers.py:1224 msgid "The following serial numbers are already allocated" msgstr "" @@ -3988,7 +3991,8 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:70 -#: templates/js/translated/bom.js:1053 templates/js/translated/build.js:1880 +#: templates/attachment_table.html:6 templates/js/translated/bom.js:1053 +#: templates/js/translated/build.js:1880 msgid "Actions" msgstr "" @@ -3996,201 +4000,202 @@ msgstr "" msgid "New Shipment" msgstr "" -#: order/views.py:117 +#: order/views.py:104 msgid "Match Supplier Parts" msgstr "" -#: order/views.py:390 +#: order/views.py:377 msgid "Sales order not found" msgstr "" -#: order/views.py:396 +#: order/views.py:383 msgid "Price not found" msgstr "" -#: order/views.py:399 +#: order/views.py:386 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:404 +#: order/views.py:391 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:504 +#: part/api.py:474 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:524 +#: part/api.py:494 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:542 +#: part/api.py:512 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:574 +#: part/api.py:544 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:665 +#: part/api.py:630 msgid "Valid" msgstr "" -#: part/api.py:666 +#: part/api.py:631 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:671 +#: part/api.py:637 msgid "This option must be selected" msgstr "" -#: part/api.py:1043 +#: part/api.py:1003 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1047 +#: part/api.py:1007 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1062 +#: part/api.py:1022 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1093 part/api.py:1097 part/api.py:1112 part/api.py:1116 +#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:99 part/models.py:874 +#: part/bom.py:127 part/models.py:98 part/models.py:814 #: part/templates/part/category.html:108 part/templates/part/part_base.html:330 msgid "Default Location" msgstr "" -#: part/bom.py:126 templates/email/low_stock_notification.html:17 +#: part/bom.py:128 templates/email/low_stock_notification.html:17 msgid "Total Stock" msgstr "" -#: part/bom.py:127 part/templates/part/part_base.html:189 +#: part/bom.py:129 part/templates/part/part_base.html:189 +#: templates/js/translated/order.js:3543 msgid "Available Stock" msgstr "" -#: part/bom.py:128 part/templates/part/part_base.html:207 +#: part/bom.py:130 part/templates/part/part_base.html:207 #: templates/js/translated/part.js:517 templates/js/translated/part.js:537 #: templates/js/translated/part.js:1229 templates/js/translated/part.js:1401 #: templates/js/translated/part.js:1417 msgid "On Order" msgstr "" -#: part/forms.py:79 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:98 +#: part/forms.py:67 msgid "Add parameter template to same level categories" msgstr "" -#: part/forms.py:102 +#: part/forms.py:71 msgid "Add parameter template to all categories" msgstr "" -#: part/forms.py:122 +#: part/forms.py:92 msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:100 +#: part/models.py:99 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:103 +#: part/models.py:102 msgid "Default keywords" msgstr "" -#: part/models.py:103 +#: part/models.py:102 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:113 part/models.py:2625 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:114 part/templates/part/category.html:128 +#: part/models.py:116 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/js/translated/search.js:198 -#: users/models.py:38 +#: users/models.py:36 msgid "Part Categories" msgstr "" -#: part/models.py:355 part/templates/part/cat_link.html:3 +#: part/models.py:337 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:39 #: templates/js/translated/part.js:1768 templates/js/translated/search.js:144 -#: templates/navbar.html:24 users/models.py:39 +#: templates/navbar.html:24 users/models.py:37 msgid "Parts" msgstr "" -#: part/models.py:447 +#: part/models.py:422 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:522 part/models.py:534 +#: part/models.py:492 part/models.py:504 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:664 +#: part/models.py:621 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:668 +#: part/models.py:625 msgid "Next available serial number is" msgstr "" -#: part/models.py:673 +#: part/models.py:630 msgid "Most recent serial number is" msgstr "" -#: part/models.py:769 +#: part/models.py:711 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:798 part/models.py:2678 +#: part/models.py:738 part/models.py:2467 msgid "Part name" msgstr "" -#: part/models.py:805 +#: part/models.py:745 msgid "Is Template" msgstr "" -#: part/models.py:806 +#: part/models.py:746 msgid "Is this part a template part?" msgstr "" -#: part/models.py:816 +#: part/models.py:756 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:817 +#: part/models.py:757 msgid "Variant Of" msgstr "" -#: part/models.py:823 +#: part/models.py:763 msgid "Part description" msgstr "" -#: part/models.py:828 part/templates/part/category.html:86 +#: part/models.py:768 part/templates/part/category.html:86 #: part/templates/part/part_base.html:294 msgid "Keywords" msgstr "" -#: part/models.py:829 +#: part/models.py:769 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:836 part/models.py:2375 part/models.py:2624 +#: part/models.py:776 part/models.py:2171 part/models.py:2412 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4199,432 +4204,432 @@ msgstr "" msgid "Category" msgstr "" -#: part/models.py:837 +#: part/models.py:777 msgid "Part category" msgstr "" -#: part/models.py:842 part/templates/part/part_base.html:266 +#: part/models.py:782 part/templates/part/part_base.html:266 #: templates/js/translated/part.js:666 templates/js/translated/part.js:1322 #: templates/js/translated/stock.js:1659 msgid "IPN" msgstr "" -#: part/models.py:843 +#: part/models.py:783 msgid "Internal Part Number" msgstr "" -#: part/models.py:849 +#: part/models.py:789 msgid "Part revision or version number" msgstr "" -#: part/models.py:850 part/templates/part/part_base.html:273 -#: report/models.py:188 templates/js/translated/part.js:670 +#: part/models.py:790 part/templates/part/part_base.html:273 +#: report/models.py:170 templates/js/translated/part.js:670 msgid "Revision" msgstr "" -#: part/models.py:872 +#: part/models.py:812 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:919 part/templates/part/part_base.html:339 +#: part/models.py:857 part/templates/part/part_base.html:339 msgid "Default Supplier" msgstr "" -#: part/models.py:920 +#: part/models.py:858 msgid "Default supplier part" msgstr "" -#: part/models.py:927 +#: part/models.py:865 msgid "Default Expiry" msgstr "" -#: part/models.py:928 +#: part/models.py:866 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:933 part/templates/part/part_base.html:200 +#: part/models.py:871 part/templates/part/part_base.html:200 msgid "Minimum Stock" msgstr "" -#: part/models.py:934 +#: part/models.py:872 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:941 +#: part/models.py:879 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:947 +#: part/models.py:885 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:953 +#: part/models.py:891 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:959 +#: part/models.py:897 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:964 +#: part/models.py:902 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:969 +#: part/models.py:907 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:974 +#: part/models.py:912 msgid "Is this part active?" msgstr "" -#: part/models.py:979 +#: part/models.py:917 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:984 +#: part/models.py:922 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:987 +#: part/models.py:925 msgid "BOM checksum" msgstr "" -#: part/models.py:987 +#: part/models.py:925 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:990 +#: part/models.py:928 msgid "BOM checked by" msgstr "" -#: part/models.py:992 +#: part/models.py:930 msgid "BOM checked date" msgstr "" -#: part/models.py:996 +#: part/models.py:934 msgid "Creation User" msgstr "" -#: part/models.py:1860 +#: part/models.py:1690 msgid "Sell multiple" msgstr "" -#: part/models.py:2425 +#: part/models.py:2218 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2442 +#: part/models.py:2235 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2462 templates/js/translated/part.js:1819 +#: part/models.py:2255 templates/js/translated/part.js:1819 #: templates/js/translated/stock.js:1274 msgid "Test Name" msgstr "" -#: part/models.py:2463 +#: part/models.py:2256 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2468 +#: part/models.py:2261 msgid "Test Description" msgstr "" -#: part/models.py:2469 +#: part/models.py:2262 msgid "Enter description for this test" msgstr "" -#: part/models.py:2474 templates/js/translated/part.js:1828 +#: part/models.py:2267 templates/js/translated/part.js:1828 #: templates/js/translated/table_filters.js:294 msgid "Required" msgstr "" -#: part/models.py:2475 +#: part/models.py:2268 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2480 templates/js/translated/part.js:1836 +#: part/models.py:2273 templates/js/translated/part.js:1836 msgid "Requires Value" msgstr "" -#: part/models.py:2481 +#: part/models.py:2274 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2486 templates/js/translated/part.js:1843 +#: part/models.py:2279 templates/js/translated/part.js:1843 msgid "Requires Attachment" msgstr "" -#: part/models.py:2487 +#: part/models.py:2280 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2498 +#: part/models.py:2288 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2534 +#: part/models.py:2324 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2542 +#: part/models.py:2332 msgid "Parameter Name" msgstr "" -#: part/models.py:2549 +#: part/models.py:2339 msgid "Parameter Units" msgstr "" -#: part/models.py:2579 +#: part/models.py:2370 msgid "Parent Part" msgstr "" -#: part/models.py:2581 part/models.py:2630 part/models.py:2631 +#: part/models.py:2372 part/models.py:2418 part/models.py:2419 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" -#: part/models.py:2583 +#: part/models.py:2374 msgid "Data" msgstr "" -#: part/models.py:2583 +#: part/models.py:2374 msgid "Parameter Value" msgstr "" -#: part/models.py:2635 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2636 +#: part/models.py:2424 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2670 +#: part/models.py:2459 msgid "Part ID or part name" msgstr "" -#: part/models.py:2673 templates/js/translated/model_renderers.js:200 +#: part/models.py:2462 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2674 +#: part/models.py:2463 msgid "Unique part ID value" msgstr "" -#: part/models.py:2677 +#: part/models.py:2466 msgid "Part Name" msgstr "" -#: part/models.py:2681 +#: part/models.py:2470 msgid "Part IPN" msgstr "" -#: part/models.py:2682 +#: part/models.py:2471 msgid "Part IPN value" msgstr "" -#: part/models.py:2685 +#: part/models.py:2474 msgid "Level" msgstr "" -#: part/models.py:2686 +#: part/models.py:2475 msgid "BOM level" msgstr "" -#: part/models.py:2761 +#: part/models.py:2544 msgid "Select parent part" msgstr "" -#: part/models.py:2769 +#: part/models.py:2552 msgid "Sub part" msgstr "" -#: part/models.py:2770 +#: part/models.py:2553 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2776 +#: part/models.py:2559 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2778 part/templates/part/upload_bom.html:58 +#: part/models.py:2561 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2778 +#: part/models.py:2561 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2781 part/templates/part/upload_bom.html:55 +#: part/models.py:2564 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2782 +#: part/models.py:2565 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2785 +#: part/models.py:2568 msgid "BOM item reference" msgstr "" -#: part/models.py:2788 +#: part/models.py:2571 msgid "BOM item notes" msgstr "" -#: part/models.py:2790 +#: part/models.py:2573 msgid "Checksum" msgstr "" -#: part/models.py:2790 +#: part/models.py:2573 msgid "BOM line checksum" msgstr "" -#: part/models.py:2794 part/templates/part/upload_bom.html:57 +#: part/models.py:2577 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2795 +#: part/models.py:2578 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2800 part/templates/part/upload_bom.html:56 +#: part/models.py:2583 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2801 +#: part/models.py:2584 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2886 stock/models.py:486 +#: part/models.py:2662 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2895 part/models.py:2897 +#: part/models.py:2671 part/models.py:2673 msgid "Sub part must be specified" msgstr "" -#: part/models.py:3006 +#: part/models.py:2778 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:3028 +#: part/models.py:2799 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3040 +#: part/models.py:2812 msgid "Parent BOM item" msgstr "" -#: part/models.py:3048 +#: part/models.py:2820 msgid "Substitute part" msgstr "" -#: part/models.py:3059 +#: part/models.py:2831 msgid "Part 1" msgstr "" -#: part/models.py:3063 +#: part/models.py:2835 msgid "Part 2" msgstr "" -#: part/models.py:3063 +#: part/models.py:2835 msgid "Select Related Part" msgstr "" -#: part/models.py:3095 +#: part/models.py:2866 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" -#: part/serializers.py:152 part/serializers.py:184 stock/serializers.py:169 +#: part/serializers.py:138 part/serializers.py:169 stock/serializers.py:163 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:918 +#: part/serializers.py:794 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:929 +#: part/serializers.py:802 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:930 +#: part/serializers.py:803 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:935 +#: part/serializers.py:808 msgid "Include Inherited" msgstr "" -#: part/serializers.py:936 +#: part/serializers.py:809 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:941 +#: part/serializers.py:814 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:942 +#: part/serializers.py:815 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:947 +#: part/serializers.py:820 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:948 +#: part/serializers.py:821 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:992 +#: part/serializers.py:861 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:993 +#: part/serializers.py:862 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1020 +#: part/serializers.py:892 msgid "No part column specified" msgstr "" -#: part/serializers.py:1063 +#: part/serializers.py:935 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1066 +#: part/serializers.py:938 msgid "No matching part found" msgstr "" -#: part/serializers.py:1069 +#: part/serializers.py:941 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:950 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1086 +#: part/serializers.py:958 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1105 +#: part/serializers.py:979 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:14 +#: part/tasks.py:21 msgid "Low stock notification" msgstr "" -#: part/tasks.py:15 +#: part/tasks.py:22 #, python-brace-format msgid "The available stock for {part.name} has fallen below the configured minimum level" msgstr "" @@ -4826,7 +4831,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4902,7 +4907,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5109,7 +5114,7 @@ msgstr "" msgid "This part is a variant of %(link)s" msgstr "" -#: part/templates/part/part_base.html:194 templates/js/translated/order.js:3543 +#: part/templates/part/part_base.html:194 #: templates/js/translated/table_filters.js:193 msgid "In Stock" msgstr "" @@ -5403,16 +5408,16 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:186 +#: part/templatetags/inventree_extras.py:158 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:223 +#: part/templatetags/inventree_extras.py:193 #, python-brace-format msgid "{title} v{version}" msgstr "" -#: part/views.py:74 +#: part/views.py:76 msgid "Set Part Category" msgstr "" @@ -5421,87 +5426,75 @@ msgstr "" msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:195 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:496 msgid "None" msgstr "" -#: part/views.py:556 +#: part/views.py:558 msgid "Part QR Code" msgstr "" -#: part/views.py:658 +#: part/views.py:652 msgid "Select Part Image" msgstr "" -#: part/views.py:684 +#: part/views.py:678 msgid "Updated part image" msgstr "" -#: part/views.py:687 +#: part/views.py:681 msgid "Part image not found" msgstr "" -#: part/views.py:775 +#: part/views.py:770 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:782 +#: part/views.py:778 msgid "Part was deleted" msgstr "" -#: part/views.py:791 +#: part/views.py:787 msgid "Part Pricing" msgstr "" -#: part/views.py:940 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:950 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:957 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:999 +#: part/views.py:978 msgid "Delete Part Category" msgstr "" -#: part/views.py:1005 +#: part/views.py:985 msgid "Part category was deleted" msgstr "" -#: part/views.py:1014 +#: part/views.py:994 msgid "Create Category Parameter Template" msgstr "" -#: part/views.py:1115 +#: part/views.py:1094 msgid "Edit Category Parameter Template" msgstr "" -#: part/views.py:1171 +#: part/views.py:1155 msgid "Delete Category Parameter Template" msgstr "" -#: plugin/apps.py:48 +#: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" -#: plugin/base/action/api.py:28 +#: plugin/base/action/api.py:27 msgid "No action specified" msgstr "" -#: plugin/base/action/api.py:39 +#: plugin/base/action/api.py:38 msgid "No matching action found" msgstr "" -#: plugin/base/barcodes/api.py:52 plugin/base/barcodes/api.py:152 +#: plugin/base/barcodes/api.py:52 plugin/base/barcodes/api.py:154 msgid "Must provide barcode_data parameter" msgstr "" @@ -5513,31 +5506,31 @@ msgstr "" msgid "Match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:155 +#: plugin/base/barcodes/api.py:157 msgid "Must provide stockitem parameter" msgstr "" -#: plugin/base/barcodes/api.py:162 +#: plugin/base/barcodes/api.py:164 msgid "No matching stock item found" msgstr "" -#: plugin/base/barcodes/api.py:192 +#: plugin/base/barcodes/api.py:194 msgid "Barcode already matches Stock Item" msgstr "" -#: plugin/base/barcodes/api.py:196 +#: plugin/base/barcodes/api.py:198 msgid "Barcode already matches Stock Location" msgstr "" -#: plugin/base/barcodes/api.py:200 +#: plugin/base/barcodes/api.py:202 msgid "Barcode already matches Part" msgstr "" -#: plugin/base/barcodes/api.py:206 plugin/base/barcodes/api.py:218 +#: plugin/base/barcodes/api.py:208 plugin/base/barcodes/api.py:220 msgid "Barcode hash already matches Stock Item" msgstr "" -#: plugin/base/barcodes/api.py:224 +#: plugin/base/barcodes/api.py:226 msgid "Barcode associated with Stock Item" msgstr "" @@ -5545,226 +5538,226 @@ msgstr "" msgid "Label printing failed" msgstr "" -#: plugin/builtin/integration/core_notifications.py:24 +#: plugin/builtin/integration/core_notifications.py:28 msgid "InvenTree contributors" msgstr "" -#: plugin/builtin/integration/core_notifications.py:25 +#: plugin/builtin/integration/core_notifications.py:29 msgid "Integrated outgoing notificaton methods" msgstr "" -#: plugin/builtin/integration/core_notifications.py:29 -#: plugin/builtin/integration/core_notifications.py:46 +#: plugin/builtin/integration/core_notifications.py:33 +#: plugin/builtin/integration/core_notifications.py:52 msgid "Enable email notifications" msgstr "" -#: plugin/builtin/integration/core_notifications.py:30 -#: plugin/builtin/integration/core_notifications.py:47 +#: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/core_notifications.py:53 msgid "Allow sending of emails for event notifications" msgstr "" -#: plugin/models.py:35 +#: plugin/models.py:32 msgid "Plugin Metadata" msgstr "" -#: plugin/models.py:36 +#: plugin/models.py:33 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: plugin/models.py:85 +#: plugin/models.py:79 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:86 +#: plugin/models.py:80 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:91 +#: plugin/models.py:85 msgid "Key" msgstr "" -#: plugin/models.py:92 +#: plugin/models.py:86 msgid "Key of plugin" msgstr "" -#: plugin/models.py:100 +#: plugin/models.py:94 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:106 +#: plugin/models.py:100 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:179 +#: plugin/models.py:168 msgid "Plugin" msgstr "" -#: plugin/models.py:253 +#: plugin/models.py:231 msgid "Method" msgstr "" -#: plugin/plugin.py:246 +#: plugin/plugin.py:214 msgid "No author found" msgstr "" -#: plugin/plugin.py:260 +#: plugin/plugin.py:226 msgid "No date found" msgstr "" -#: plugin/samples/integration/sample.py:42 +#: plugin/samples/integration/sample.py:39 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:43 +#: plugin/samples/integration/sample.py:40 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:48 +#: plugin/samples/integration/sample.py:45 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:46 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:52 +#: plugin/samples/integration/sample.py:49 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:53 +#: plugin/samples/integration/sample.py:50 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:58 +#: plugin/samples/integration/sample.py:55 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:59 +#: plugin/samples/integration/sample.py:56 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:74 +#: plugin/serializers.py:73 msgid "Source URL" msgstr "" -#: plugin/serializers.py:75 +#: plugin/serializers.py:74 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:80 +#: plugin/serializers.py:79 msgid "Package Name" msgstr "" -#: plugin/serializers.py:81 +#: plugin/serializers.py:80 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:84 +#: plugin/serializers.py:83 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:85 +#: plugin/serializers.py:84 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:104 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:102 +#: plugin/serializers.py:106 msgid "Either packagename of URL must be provided" msgstr "" -#: report/api.py:191 +#: report/api.py:166 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:223 report/api.py:270 +#: report/api.py:198 report/api.py:239 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/models.py:170 +#: report/models.py:152 msgid "Template name" msgstr "" -#: report/models.py:176 +#: report/models.py:158 msgid "Report template file" msgstr "" -#: report/models.py:183 +#: report/models.py:165 msgid "Report template description" msgstr "" -#: report/models.py:189 +#: report/models.py:171 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:280 +#: report/models.py:247 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:287 +#: report/models.py:254 msgid "Report template is enabled" msgstr "" -#: report/models.py:311 +#: report/models.py:280 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:319 +#: report/models.py:288 msgid "Include Installed Tests" msgstr "" -#: report/models.py:320 +#: report/models.py:289 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:370 +#: report/models.py:336 msgid "Build Filters" msgstr "" -#: report/models.py:371 +#: report/models.py:337 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:413 +#: report/models.py:376 msgid "Part Filters" msgstr "" -#: report/models.py:414 +#: report/models.py:377 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:448 +#: report/models.py:411 msgid "Purchase order query filters" msgstr "" -#: report/models.py:487 +#: report/models.py:450 msgid "Sales order query filters" msgstr "" -#: report/models.py:542 +#: report/models.py:504 msgid "Snippet" msgstr "" -#: report/models.py:543 +#: report/models.py:505 msgid "Report snippet file" msgstr "" -#: report/models.py:547 +#: report/models.py:509 msgid "Snippet file description" msgstr "" -#: report/models.py:582 +#: report/models.py:546 msgid "Asset" msgstr "" -#: report/models.py:583 +#: report/models.py:547 msgid "Report asset file" msgstr "" -#: report/models.py:586 +#: report/models.py:550 msgid "Asset file description" msgstr "" @@ -5781,7 +5774,7 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:655 stock/templates/stock/item_base.html:322 +#: stock/models.py:632 stock/templates/stock/item_base.html:322 #: templates/js/translated/build.js:420 templates/js/translated/build.js:572 #: templates/js/translated/build.js:1173 templates/js/translated/build.js:1671 #: templates/js/translated/model_renderers.js:106 @@ -5795,12 +5788,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2183 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2189 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5830,362 +5823,366 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:542 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:549 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:574 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:82 stock/models.py:750 +#: stock/models.py:83 stock/models.py:727 #: stock/templates/stock/item_base.html:252 msgid "Owner" msgstr "" -#: stock/models.py:83 stock/models.py:751 +#: stock/models.py:84 stock/models.py:728 msgid "Select Owner" msgstr "" -#: stock/models.py:459 +#: stock/models.py:435 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:503 +#: stock/models.py:477 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:513 stock/models.py:522 +#: stock/models.py:487 stock/models.py:496 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:514 +#: stock/models.py:488 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:536 +#: stock/models.py:510 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:542 +#: stock/models.py:516 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:556 +#: stock/models.py:530 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:599 +#: stock/models.py:576 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:608 +#: stock/models.py:585 msgid "Base part" msgstr "" -#: stock/models.py:616 +#: stock/models.py:593 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:622 stock/templates/stock/location.html:17 +#: stock/models.py:599 stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:625 +#: stock/models.py:602 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:632 +#: stock/models.py:609 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:638 stock/templates/stock/item_base.html:361 +#: stock/models.py:615 stock/templates/stock/item_base.html:361 msgid "Installed In" msgstr "" -#: stock/models.py:641 +#: stock/models.py:618 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:657 +#: stock/models.py:634 msgid "Serial number for this item" msgstr "" -#: stock/models.py:671 +#: stock/models.py:648 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:676 +#: stock/models.py:653 msgid "Stock Quantity" msgstr "" -#: stock/models.py:685 +#: stock/models.py:662 msgid "Source Build" msgstr "" -#: stock/models.py:687 +#: stock/models.py:664 msgid "Build for this stock item" msgstr "" -#: stock/models.py:698 +#: stock/models.py:675 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:701 +#: stock/models.py:678 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:707 +#: stock/models.py:684 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:713 stock/templates/stock/item_base.html:429 +#: stock/models.py:690 stock/templates/stock/item_base.html:429 #: templates/js/translated/stock.js:1816 msgid "Expiry Date" msgstr "" -#: stock/models.py:714 +#: stock/models.py:691 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:727 +#: stock/models.py:704 msgid "Delete on deplete" msgstr "" -#: stock/models.py:727 +#: stock/models.py:704 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:737 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:746 +#: stock/models.py:723 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:778 +#: stock/models.py:751 msgid "Converted to part" msgstr "" -#: stock/models.py:1298 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1304 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1310 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1313 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1316 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1394 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1397 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1400 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1403 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1406 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1409 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1416 stock/serializers.py:863 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1420 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1424 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1428 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1600 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2103 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2160 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2166 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2184 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2190 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2196 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2203 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2209 +#: stock/models.py:2094 msgid "Test notes" msgstr "" -#: stock/serializers.py:162 +#: stock/serializers.py:156 msgid "Purchase price of this stock item" msgstr "" -#: stock/serializers.py:283 +#: stock/serializers.py:280 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:298 +#: stock/serializers.py:292 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:304 +#: stock/serializers.py:298 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:315 stock/serializers.py:820 stock/serializers.py:1061 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:322 +#: stock/serializers.py:316 msgid "Optional note field" msgstr "" -#: stock/serializers.py:335 +#: stock/serializers.py:326 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:352 +#: stock/serializers.py:343 msgid "Serial numbers already exist" msgstr "" -#: stock/serializers.py:394 +#: stock/serializers.py:383 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:410 +#: stock/serializers.py:396 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:417 +#: stock/serializers.py:403 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:440 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:460 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:677 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:681 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:685 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:715 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:721 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:729 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:739 stock/serializers.py:969 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:827 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:833 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:838 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:839 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:849 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:931 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:959 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6193,44 +6190,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6433,6 +6426,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6502,7 +6499,7 @@ msgid "Sublocations" msgstr "" #: stock/templates/stock/location.html:156 templates/InvenTree/search.html:165 -#: templates/js/translated/search.js:238 users/models.py:40 +#: templates/js/translated/search.js:238 users/models.py:38 msgid "Stock Locations" msgstr "" @@ -6554,7 +6551,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:227 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6575,62 +6572,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:125 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:144 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:153 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:164 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:175 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:192 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:193 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:208 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:264 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:277 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:288 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:295 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:304 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6901,7 +6870,7 @@ msgid "Install Plugin" msgstr "" #: templates/InvenTree/settings/plugin.html:48 templates/navbar.html:137 -#: users/models.py:37 +#: users/models.py:35 msgid "Admin" msgstr "" @@ -7049,6 +7018,22 @@ msgstr "" msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:355 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:373 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:387 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:395 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -7589,6 +7574,14 @@ msgstr "" msgid "Add Attachment" msgstr "" +#: templates/attachment_table.html:11 +msgid "Delete selected attachments" +msgstr "" + +#: templates/attachment_table.html:12 templates/js/translated/attachment.js:110 +msgid "Delete Attachments" +msgstr "" + #: templates/base.html:101 msgid "Server Restart Required" msgstr "" @@ -7725,31 +7718,27 @@ msgstr "" msgid "Error code" msgstr "" -#: templates/js/translated/attachment.js:78 +#: templates/js/translated/attachment.js:96 +msgid "All selected attachments will be deleted" +msgstr "" + +#: templates/js/translated/attachment.js:156 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:100 +#: templates/js/translated/attachment.js:180 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:110 -msgid "Confirm Delete" -msgstr "" - -#: templates/js/translated/attachment.js:111 -msgid "Delete Attachment" -msgstr "" - -#: templates/js/translated/attachment.js:167 +#: templates/js/translated/attachment.js:246 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:183 +#: templates/js/translated/attachment.js:262 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:190 +#: templates/js/translated/attachment.js:269 msgid "Delete attachment" msgstr "" @@ -7966,6 +7955,7 @@ msgid "Variant stock allowed" msgstr "" #: templates/js/translated/bom.js:906 templates/js/translated/build.js:1814 +#: templates/js/translated/order.js:3562 msgid "No Stock Available" msgstr "" @@ -8194,20 +8184,20 @@ msgstr "" msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1808 +#: templates/js/translated/build.js:1808 templates/js/translated/order.js:3568 msgid "Insufficient stock available" msgstr "" -#: templates/js/translated/build.js:1810 +#: templates/js/translated/build.js:1810 templates/js/translated/order.js:3566 msgid "Sufficient stock available" msgstr "" #: templates/js/translated/build.js:1839 templates/js/translated/build.js:2084 -#: templates/js/translated/build.js:2657 templates/js/translated/order.js:3553 +#: templates/js/translated/build.js:2657 templates/js/translated/order.js:3579 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1887 templates/js/translated/order.js:3633 +#: templates/js/translated/build.js:1887 templates/js/translated/order.js:3659 msgid "Build stock" msgstr "" @@ -8215,7 +8205,7 @@ msgstr "" msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1894 templates/js/translated/order.js:3626 +#: templates/js/translated/build.js:1894 templates/js/translated/order.js:3652 msgid "Allocate stock" msgstr "" @@ -8867,15 +8857,15 @@ msgstr "" msgid "Items" msgstr "" -#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3685 +#: templates/js/translated/order.js:1783 templates/js/translated/order.js:3711 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3707 +#: templates/js/translated/order.js:1800 templates/js/translated/order.js:3733 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3718 +#: templates/js/translated/order.js:1813 templates/js/translated/order.js:3744 msgid "Delete Line Item" msgstr "" @@ -8888,13 +8878,13 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1937 templates/js/translated/order.js:2139 -#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3952 +#: templates/js/translated/order.js:3467 templates/js/translated/order.js:3978 #: templates/js/translated/part.js:1948 templates/js/translated/part.js:2301 msgid "Unit Price" msgstr "" #: templates/js/translated/order.js:1952 templates/js/translated/order.js:2155 -#: templates/js/translated/order.js:3483 templates/js/translated/order.js:3968 +#: templates/js/translated/order.js:3483 templates/js/translated/order.js:3994 msgid "Total Price" msgstr "" @@ -8907,39 +8897,39 @@ msgstr "" msgid "Receive line item" msgstr "" -#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3639 +#: templates/js/translated/order.js:2056 templates/js/translated/order.js:3665 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3640 +#: templates/js/translated/order.js:2057 templates/js/translated/order.js:3666 msgid "Edit line item" msgstr "" -#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3644 +#: templates/js/translated/order.js:2058 templates/js/translated/order.js:3670 msgid "Delete line item" msgstr "" -#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4017 +#: templates/js/translated/order.js:2204 templates/js/translated/order.js:4043 msgid "Duplicate line" msgstr "" -#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4018 +#: templates/js/translated/order.js:2205 templates/js/translated/order.js:4044 msgid "Edit line" msgstr "" -#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4019 +#: templates/js/translated/order.js:2206 templates/js/translated/order.js:4045 msgid "Delete line" msgstr "" -#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4049 +#: templates/js/translated/order.js:2236 templates/js/translated/order.js:4075 msgid "Duplicate Line" msgstr "" -#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4070 +#: templates/js/translated/order.js:2257 templates/js/translated/order.js:4096 msgid "Edit Line" msgstr "" -#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4081 +#: templates/js/translated/order.js:2268 templates/js/translated/order.js:4107 msgid "Delete Line" msgstr "" @@ -9032,39 +9022,39 @@ msgstr "" msgid "Stock location not specified" msgstr "" -#: templates/js/translated/order.js:3623 +#: templates/js/translated/order.js:3649 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/order.js:3629 +#: templates/js/translated/order.js:3655 msgid "Purchase stock" msgstr "" -#: templates/js/translated/order.js:3636 templates/js/translated/order.js:3834 +#: templates/js/translated/order.js:3662 templates/js/translated/order.js:3860 msgid "Calculate price" msgstr "" -#: templates/js/translated/order.js:3648 +#: templates/js/translated/order.js:3674 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/order.js:3651 +#: templates/js/translated/order.js:3677 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/order.js:3733 +#: templates/js/translated/order.js:3759 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/order.js:3842 +#: templates/js/translated/order.js:3868 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/order.js:3856 +#: templates/js/translated/order.js:3882 msgid "No matching line items" msgstr "" -#: templates/js/translated/order.js:4092 +#: templates/js/translated/order.js:4118 msgid "No matching lines" msgstr "" @@ -9536,7 +9526,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:887 users/models.py:216 +#: templates/js/translated/stock.js:887 users/models.py:215 msgid "Add" msgstr "" @@ -10271,50 +10261,50 @@ msgstr "" msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:184 +#: users/admin.py:191 msgid "The following users are members of multiple groups:" msgstr "" -#: users/admin.py:207 +#: users/admin.py:214 msgid "Personal info" msgstr "" -#: users/admin.py:208 +#: users/admin.py:215 msgid "Permissions" msgstr "" -#: users/admin.py:211 +#: users/admin.py:218 msgid "Important dates" msgstr "" -#: users/models.py:203 +#: users/models.py:202 msgid "Permission set" msgstr "" -#: users/models.py:211 +#: users/models.py:210 msgid "Group" msgstr "" -#: users/models.py:214 +#: users/models.py:213 msgid "View" msgstr "" -#: users/models.py:214 +#: users/models.py:213 msgid "Permission to view items" msgstr "" -#: users/models.py:216 +#: users/models.py:215 msgid "Permission to add items" msgstr "" -#: users/models.py:218 +#: users/models.py:217 msgid "Change" msgstr "" -#: users/models.py:218 +#: users/models.py:217 msgid "Permissions to edit items" msgstr "" -#: users/models.py:220 +#: users/models.py:219 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po index 725d288a34..b3162ac9ce 100644 --- a/InvenTree/locale/ru/LC_MESSAGES/django.po +++ b/InvenTree/locale/ru/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:42\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -124,7 +124,7 @@ msgstr "Файл не найден" msgid "Missing external link" msgstr "Отсутствует внешняя ссылка" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "Неверный выбор" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "Описание (необязательно)" msgid "parent" msgstr "родитель" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "Должно быть действительным номером" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "Ссылка на заказ" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "Внешняя ссылка" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "Исходный складской предмет" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "Введите количество для вывода сборки" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "Количество должно быть больше нуля" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "BOM Компонент" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "Компонент должен быть в наличии" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Приложения" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "Загрузить файл" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2551,12 +2552,12 @@ msgstr "Детали импортированы" msgid "Previous Step" msgstr "Предыдущий шаг" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "Ссылка" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "Ссылка на изображение" @@ -2713,7 +2714,7 @@ msgstr "Наименование параметра" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "Значение параметра" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "Ед.изм" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "Скачать изображение по ссылке" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "Компании" msgid "New Company" msgstr "Новая компания" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "Скачать изображение" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "Доступный запас" msgid "On Order" msgstr "" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "Выберите категорию" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "Ключевые слова по умолчанию" msgid "Default keywords for parts in this category" msgstr "Ключевые слова по умолчанию для деталей этой категории" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Категория детали" @@ -4160,7 +4153,7 @@ msgstr "" msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "Наименование детали" @@ -4193,7 +4186,7 @@ msgstr "Ключевые слова" msgid "Part keywords to improve visibility in search results" msgstr "Ключевые слова для улучшения видимости в результатах поиска" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "Родительская деталь" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "Шаблон параметра" @@ -4397,153 +4390,153 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "Артикул или наименование детали" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "Артикул" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "Наименование детали" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "IPN" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "Значение IPN" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "Выберите родительскую деталь" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "Выбрать деталь для использования в BOM" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "Разрешить разновидности" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "Для отслеживаемых деталей количество должно быть целым числом" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "Часть 1" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "Часть 2" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "Сборки" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5414,83 +5407,59 @@ msgstr "Неизвестная база данных" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "Укажите категорию" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "Изображение детали не найдено" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "Деталь была удалена" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "Удалить категорию" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "Категория удалена" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "Удалить при обнулении" msgid "Delete this Stock Item when stock is depleted" msgstr "Удалить эту единицу хранения при обнулении складского запаса" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "Заметки о единице хранения" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "Деталь не является отслеживаемой" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "Выбранная деталь отсутствует в специфи msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "Выбранная компания не является покупателем" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "Дочерние единицы хранения" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "Эта единица хранения не имеет дочерних элементов" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "Установленные единицы хранения" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "Установить единицу хранения" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "Места хранения" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "Предупреждение" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "Доступ запрещён" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "Идентификатор" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "Шаблоны параметров категории не найдены" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "Редактировать шаблон" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "Удалить шаблон" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "Шаблоны параметров детали не найдены" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.po b/InvenTree/locale/sv/LC_MESSAGES/django.po index f3e9f0349f..38d1df2ae3 100644 --- a/InvenTree/locale/sv/LC_MESSAGES/django.po +++ b/InvenTree/locale/sv/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:42\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Swedish\n" "Language: sv_SE\n" @@ -124,7 +124,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "Ogiltigt val" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "Beskrivning (valfritt)" msgid "parent" msgstr "överordnad" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "Måste vara ett giltigt nummer" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2551,12 +2552,12 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "" @@ -2713,7 +2714,7 @@ msgstr "" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "" msgid "On Order" msgstr "" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -4160,7 +4153,7 @@ msgstr "" msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "" @@ -4193,7 +4186,7 @@ msgstr "" msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" @@ -4397,153 +4390,153 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5414,83 +5407,59 @@ msgstr "" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/th/LC_MESSAGES/django.po b/InvenTree/locale/th/LC_MESSAGES/django.po index 362e1b00a9..8bfca57453 100644 --- a/InvenTree/locale/th/LC_MESSAGES/django.po +++ b/InvenTree/locale/th/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:43\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Thai\n" "Language: th_TH\n" @@ -124,7 +124,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "" msgid "parent" msgstr "" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2551,12 +2552,12 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "" @@ -2713,7 +2714,7 @@ msgstr "" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "" msgid "On Order" msgstr "" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -4160,7 +4153,7 @@ msgstr "" msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "" @@ -4193,7 +4186,7 @@ msgstr "" msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" @@ -4397,153 +4390,153 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5414,83 +5407,59 @@ msgstr "" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po index dfcef31f78..9109303ea1 100644 --- a/InvenTree/locale/tr/LC_MESSAGES/django.po +++ b/InvenTree/locale/tr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:42\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -124,7 +124,7 @@ msgstr "Eksik dosya" msgid "Missing external link" msgstr "Bozuk dış bağlantı" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "Geçersiz seçim" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "Açıklama (isteğe bağlı)" msgid "parent" msgstr "üst" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "Geçerli bir numara olmalı" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "Yapım İşi Emri Referansı" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "Harici Bağlantı" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "Yapım işi için tahsis edilen parçalar" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "Kaynak stok kalemi" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "Yapım işi çıktısı için miktarını girin" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "" @@ -1477,7 +1478,7 @@ msgstr "Tamamlanmış Yapım İşi Çıktıları" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Ekler" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "Dosya Yükle" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "Alanları Eşleştir" @@ -2551,12 +2552,12 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "" @@ -2713,7 +2714,7 @@ msgstr "Parametre adı" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "Parametre değeri" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "Şirketler" msgid "New Company" msgstr "Yeni Şirket" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "Resmi İndirin" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "Geçersiz yanıt: {code}" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "Sağlanan URL geçerli bir resim dosyası değil" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "" msgid "On Order" msgstr "" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "Parametre şablonunu aynı seviyedeki kategorilere ekle" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "Parametre şablonunu tüm kategorilere ekle" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -4160,7 +4153,7 @@ msgstr "En son seri numarası" msgid "Duplicate IPN not allowed in part settings" msgstr "Yinelenen DPN'ye parça ayarlarında izin verilmiyor" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "Parça adı" @@ -4193,7 +4186,7 @@ msgstr "Anahtar kelimeler" msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "Parametre Şablonu" @@ -4397,153 +4390,153 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Bu malzeme listesi, çeşit parçalar listesini kalıtsalıdır" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "Çeşide İzin Ver" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Çeşit parçaların stok kalemleri bu malzeme listesinde kullanılabilir" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "Parça Test Şablonları" msgid "Add Test Template" msgstr "Test Şablonu Ekle" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5414,83 +5407,59 @@ msgstr "" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "Hiçbiri" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "Parça Parametre Şablonu Oluştur" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "Parça Parametre Şablonu Düzenle" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "Parça Parametre Şablonu Sil" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "Kategori Parametre Şablonu Oluştur" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "Kategori Parametre Şablonu Düzenle" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "Kategori Parametre Şablonu Sil" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "Seri No" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "Seri numaraları tam sayı listesi olmalı" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "Miktar seri numaları ile eşleşmiyor" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "Seri numaraları zaten mevcut: {exists}" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "Stok kalemi stokta olmadığı için taşınamaz" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "İşlem notu ekle (isteğe bağlı)" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "Stok Kalemine Dönüştür" @@ -6577,62 +6550,34 @@ msgstr "Uyarı" msgid "This action cannot be easily undone" msgstr "Bu işlem kolayca geri alınamaz" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "Stok Konumu QR Kodu" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "Geçerli bir konum belirtiniz" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "Onay kutusunu işaretleyin" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "Stok Konumunu Sil" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "Kategori parametre şablonu bulunamadı" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "Şablonu Düzenle" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "Şablonu Sil" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "Kategori Parametre Şablonu Oluştur" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "Kategori Parametre Şablonu Sil" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "Parça parametre şablonu bulunamadı" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "Parça Parametre Şablonu Oluştur" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "Parça Parametre Şablonu Düzenle" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "Parça Parametre Şablonu Sil" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po index bba20ac053..ea80c61690 100644 --- a/InvenTree/locale/vi/LC_MESSAGES/django.po +++ b/InvenTree/locale/vi/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:42\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Vietnamese\n" "Language: vi_VN\n" @@ -124,7 +124,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "Mô tả (tùy chọn)" msgid "parent" msgstr "" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "" @@ -2551,12 +2552,12 @@ msgstr "" msgid "Previous Step" msgstr "" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "" @@ -2713,7 +2714,7 @@ msgstr "" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "" msgid "New Company" msgstr "" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "" @@ -4085,19 +4086,11 @@ msgstr "" msgid "On Order" msgstr "" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -4160,7 +4153,7 @@ msgstr "" msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "" @@ -4193,7 +4186,7 @@ msgstr "" msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "" @@ -4397,153 +4390,153 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5414,83 +5407,59 @@ msgstr "" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po index 95410df77b..44c1742543 100644 --- a/InvenTree/locale/zh/LC_MESSAGES/django.po +++ b/InvenTree/locale/zh/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-02 14:08+0000\n" -"PO-Revision-Date: 2022-06-02 14:42\n" +"POT-Creation-Date: 2022-06-05 14:26+0000\n" +"PO-Revision-Date: 2022-06-05 14:34\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -124,7 +124,7 @@ msgstr "缺少文件" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:187 stock/models.py:2086 +#: InvenTree/models.py:187 stock/models.py:2087 #: templates/js/translated/attachment.js:101 #: templates/js/translated/attachment.js:198 msgid "Attachment" @@ -208,7 +208,7 @@ msgstr "选择无效" #: templates/InvenTree/settings/plugin.html:49 #: templates/InvenTree/settings/plugin.html:132 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:327 +#: templates/InvenTree/settings/settings.html:346 #: templates/js/translated/company.js:539 #: templates/js/translated/company.js:757 templates/js/translated/part.js:615 #: templates/js/translated/part.js:767 templates/js/translated/part.js:1736 @@ -248,7 +248,7 @@ msgstr "描述 (可选)" msgid "parent" msgstr "上级项" -#: InvenTree/serializers.py:52 part/models.py:2650 +#: InvenTree/serializers.py:52 part/models.py:2652 msgid "Must be a valid number" msgstr "必须是有效数字" @@ -647,7 +647,7 @@ msgid "Build Order Reference" msgstr "相关生产订单" #: build/models.py:189 order/models.py:288 order/models.py:638 -#: order/models.py:916 part/models.py:2568 +#: order/models.py:916 part/models.py:2570 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:91 #: report/templates/report/inventree_so_report.html:92 @@ -676,7 +676,7 @@ msgstr "此次生产匹配的订单" #: order/models.py:1012 order/models.py:1103 part/models.py:336 #: part/models.py:2099 part/models.py:2114 part/models.py:2133 #: part/models.py:2151 part/models.py:2250 part/models.py:2370 -#: part/models.py:2458 part/models.py:2543 part/models.py:2819 +#: part/models.py:2460 part/models.py:2545 part/models.py:2821 #: part/serializers.py:793 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -827,9 +827,9 @@ msgstr "外部链接" #: order/templates/order/so_sidebar.html:17 part/models.py:921 #: part/templates/part/part_sidebar.html:59 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/models.py:713 stock/models.py:1984 stock/models.py:2092 -#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:730 -#: stock/serializers.py:829 stock/serializers.py:961 +#: stock/models.py:713 stock/models.py:1985 stock/models.py:2093 +#: stock/serializers.py:315 stock/serializers.py:444 stock/serializers.py:486 +#: stock/serializers.py:772 stock/serializers.py:871 stock/serializers.py:1003 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:100 templates/js/translated/bom.js:1044 #: templates/js/translated/company.js:962 templates/js/translated/order.js:2040 @@ -891,8 +891,8 @@ msgid "Build to allocate parts" msgstr "" #: build/models.py:1282 build/serializers.py:603 order/serializers.py:994 -#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:661 -#: stock/serializers.py:787 stock/templates/stock/item_base.html:10 +#: order/serializers.py:1015 stock/serializers.py:382 stock/serializers.py:703 +#: stock/serializers.py:829 stock/templates/stock/item_base.html:10 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:199 #: templates/js/translated/build.js:738 templates/js/translated/build.js:743 @@ -914,8 +914,8 @@ msgstr "源库存项" #: build/templates/build/detail.html:34 common/models.py:1536 #: company/forms.py:36 company/templates/company/supplier_part.html:258 #: order/models.py:909 order/models.py:1412 order/serializers.py:1134 -#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:104 -#: part/forms.py:119 part/forms.py:134 part/models.py:2559 +#: order/templates/order/order_wizard/match_parts.html:30 part/forms.py:68 +#: part/forms.py:83 part/forms.py:98 part/models.py:2561 #: part/templates/part/detail.html:935 part/templates/part/detail.html:1021 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 @@ -984,7 +984,7 @@ msgstr "输入生产产出数量" #: build/serializers.py:198 build/serializers.py:623 order/models.py:363 #: order/serializers.py:280 order/serializers.py:435 part/serializers.py:512 -#: part/serializers.py:956 stock/models.py:470 stock/models.py:1238 +#: part/serializers.py:956 stock/models.py:470 stock/models.py:1239 #: stock/serializers.py:288 msgid "Quantity must be greater than zero" msgstr "" @@ -1015,7 +1015,7 @@ msgstr "" msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:268 stock/api.py:547 +#: build/serializers.py:268 stock/api.py:552 msgid "The following serial numbers already exist" msgstr "" @@ -1024,8 +1024,9 @@ msgid "A list of build outputs must be provided" msgstr "" #: build/serializers.py:356 order/serializers.py:421 order/serializers.py:525 -#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:822 -#: stock/serializers.py:1055 stock/templates/stock/item_base.html:390 +#: stock/serializers.py:308 stock/serializers.py:439 stock/serializers.py:481 +#: stock/serializers.py:864 stock/serializers.py:1097 +#: stock/templates/stock/item_base.html:390 #: templates/js/translated/barcode.js:436 #: templates/js/translated/barcode.js:618 templates/js/translated/build.js:750 #: templates/js/translated/build.js:1685 templates/js/translated/order.js:1213 @@ -1107,8 +1108,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:535 build/serializers.py:580 part/models.py:2677 -#: part/models.py:2811 +#: build/serializers.py:535 build/serializers.py:580 part/models.py:2679 +#: part/models.py:2813 msgid "BOM Item" msgstr "" @@ -1124,7 +1125,7 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:609 stock/serializers.py:674 +#: build/serializers.py:609 stock/serializers.py:716 msgid "Item must be in stock" msgstr "" @@ -1477,7 +1478,7 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:82 #: order/templates/order/sales_order_detail.html:129 #: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:205 -#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:122 +#: part/templates/part/part_sidebar.html:57 stock/templates/stock/item.html:117 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "附件" @@ -2521,14 +2522,14 @@ msgid "Was the work on this message finished?" msgstr "" #: common/views.py:87 order/templates/order/purchase_order_detail.html:23 -#: order/views.py:102 part/views.py:194 +#: order/views.py:102 part/views.py:191 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" msgstr "上传文件" #: common/views.py:88 order/views.py:103 #: part/templates/part/import_wizard/ajax_match_fields.html:45 -#: part/views.py:195 templates/patterns/wizard/match_fields.html:51 +#: part/views.py:192 templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" msgstr "匹配字段" @@ -2551,12 +2552,12 @@ msgstr "已导入商品" msgid "Previous Step" msgstr "" -#: company/forms.py:16 part/forms.py:22 +#: company/forms.py:16 part/forms.py:21 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: company/forms.py:17 part/forms.py:23 +#: company/forms.py:17 part/forms.py:22 msgid "Image URL" msgstr "图片URL" @@ -2713,7 +2714,7 @@ msgstr "参数名称" #: company/models.py:361 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2079 templates/js/translated/company.js:540 +#: stock/models.py:2080 templates/js/translated/company.js:540 #: templates/js/translated/company.js:763 templates/js/translated/part.js:776 #: templates/js/translated/stock.js:1294 msgid "Value" @@ -2725,7 +2726,7 @@ msgstr "参数值" #: company/models.py:368 part/models.py:878 part/models.py:2339 #: part/templates/part/part_base.html:280 -#: templates/InvenTree/settings/settings.html:332 +#: templates/InvenTree/settings/settings.html:351 #: templates/js/translated/company.js:769 templates/js/translated/part.js:782 msgid "Units" msgstr "单位" @@ -2778,7 +2779,7 @@ msgid "Supplier part description" msgstr "供应商商品描述" #: company/models.py:518 company/templates/company/supplier_part.html:125 -#: part/models.py:2571 part/templates/part/upload_bom.html:59 +#: part/models.py:2573 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:387 msgid "Note" @@ -2867,7 +2868,7 @@ msgstr "从 URL 下载图片" #: company/templates/company/company_base.html:86 order/models.py:649 #: order/templates/order/sales_order_base.html:116 stock/models.py:627 -#: stock/models.py:628 stock/serializers.py:716 +#: stock/models.py:628 stock/serializers.py:758 #: stock/templates/stock/item_base.html:401 #: templates/js/translated/company.js:385 templates/js/translated/order.js:2458 #: templates/js/translated/stock.js:2431 @@ -3237,20 +3238,20 @@ msgstr "公司" msgid "New Company" msgstr "新建公司信息" -#: company/views.py:112 part/views.py:579 +#: company/views.py:112 part/views.py:576 msgid "Download Image" msgstr "下载图片" -#: company/views.py:139 part/views.py:609 +#: company/views.py:139 part/views.py:606 msgid "Image size exceeds maximum allowable size for download" msgstr "图像大小超过下载允许的最大尺寸" -#: company/views.py:146 part/views.py:616 +#: company/views.py:146 part/views.py:613 #, python-brace-format msgid "Invalid response: {code}" msgstr "无效响应: {code}" -#: company/views.py:155 part/views.py:625 +#: company/views.py:155 part/views.py:622 msgid "Supplied URL is not a valid image file" msgstr "提供的 URL 不是一个有效的图片文件" @@ -4020,47 +4021,47 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:474 +#: part/api.py:481 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:494 +#: part/api.py:501 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:512 +#: part/api.py:519 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:544 +#: part/api.py:551 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:630 +#: part/api.py:637 msgid "Valid" msgstr "" -#: part/api.py:631 +#: part/api.py:638 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:637 +#: part/api.py:644 msgid "This option must be selected" msgstr "" -#: part/api.py:1003 +#: part/api.py:1010 msgid "Must be greater than zero" msgstr "必须大于0" -#: part/api.py:1007 +#: part/api.py:1014 msgid "Must be a valid quantity" msgstr "必须是有效的数量" -#: part/api.py:1022 +#: part/api.py:1029 msgid "Specify location for initial part stock" msgstr "指定初始初始商品仓储地点" -#: part/api.py:1053 part/api.py:1057 part/api.py:1072 part/api.py:1076 +#: part/api.py:1060 part/api.py:1064 part/api.py:1079 part/api.py:1083 msgid "This field is required" msgstr "此字段为必填" @@ -4085,19 +4086,11 @@ msgstr "可用库存" msgid "On Order" msgstr "" -#: part/forms.py:60 +#: part/forms.py:59 msgid "Select part category" msgstr "选择类别" -#: part/forms.py:80 -msgid "Add parameter template to same level categories" -msgstr "" - -#: part/forms.py:84 -msgid "Add parameter template to all categories" -msgstr "" - -#: part/forms.py:105 +#: part/forms.py:69 msgid "Input quantity for price calculation" msgstr "" @@ -4113,7 +4106,7 @@ msgstr "" msgid "Default keywords for parts in this category" msgstr "此类别商品的默认关键字" -#: part/models.py:115 part/models.py:2413 part/templates/part/category.html:15 +#: part/models.py:115 part/models.py:2415 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "商品类别" @@ -4160,7 +4153,7 @@ msgstr "" msgid "Duplicate IPN not allowed in part settings" msgstr "在商品设置中不允许重复的IPN" -#: part/models.py:738 part/models.py:2467 +#: part/models.py:738 part/models.py:2469 msgid "Part name" msgstr "商品名称" @@ -4193,7 +4186,7 @@ msgstr "关键词" msgid "Part keywords to improve visibility in search results" msgstr "提高搜索结果可见性的关键字" -#: part/models.py:776 part/models.py:2171 part/models.py:2412 +#: part/models.py:776 part/models.py:2171 part/models.py:2414 #: part/templates/part/part_base.html:257 #: part/templates/part/set_category.html:15 #: templates/InvenTree/notifications/notifications.html:65 @@ -4384,7 +4377,7 @@ msgstr "" msgid "Parent Part" msgstr "" -#: part/models.py:2372 part/models.py:2418 part/models.py:2419 +#: part/models.py:2372 part/models.py:2420 part/models.py:2421 #: templates/InvenTree/settings/settings.html:226 msgid "Parameter Template" msgstr "参数模板" @@ -4397,153 +4390,153 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2423 templates/InvenTree/settings/settings.html:235 +#: part/models.py:2425 templates/InvenTree/settings/settings.html:235 msgid "Default Value" msgstr "默认值" -#: part/models.py:2424 +#: part/models.py:2426 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2459 +#: part/models.py:2461 msgid "Part ID or part name" msgstr "" -#: part/models.py:2462 templates/js/translated/model_renderers.js:200 +#: part/models.py:2464 templates/js/translated/model_renderers.js:200 msgid "Part ID" msgstr "商品ID" -#: part/models.py:2463 +#: part/models.py:2465 msgid "Unique part ID value" msgstr "" -#: part/models.py:2466 +#: part/models.py:2468 msgid "Part Name" msgstr "" -#: part/models.py:2470 +#: part/models.py:2472 msgid "Part IPN" msgstr "" -#: part/models.py:2471 +#: part/models.py:2473 msgid "Part IPN value" msgstr "" -#: part/models.py:2474 +#: part/models.py:2476 msgid "Level" msgstr "" -#: part/models.py:2475 +#: part/models.py:2477 msgid "BOM level" msgstr "" -#: part/models.py:2544 +#: part/models.py:2546 msgid "Select parent part" msgstr "" -#: part/models.py:2552 +#: part/models.py:2554 msgid "Sub part" msgstr "" -#: part/models.py:2553 +#: part/models.py:2555 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2559 +#: part/models.py:2561 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2561 part/templates/part/upload_bom.html:58 +#: part/models.py:2563 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:877 templates/js/translated/bom.js:971 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "可选项" -#: part/models.py:2561 +#: part/models.py:2563 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2564 part/templates/part/upload_bom.html:55 +#: part/models.py:2566 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2565 +#: part/models.py:2567 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2568 +#: part/models.py:2570 msgid "BOM item reference" msgstr "" -#: part/models.py:2571 +#: part/models.py:2573 msgid "BOM item notes" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "Checksum" msgstr "" -#: part/models.py:2573 +#: part/models.py:2575 msgid "BOM line checksum" msgstr "" -#: part/models.py:2577 part/templates/part/upload_bom.html:57 +#: part/models.py:2579 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:988 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "继承项" -#: part/models.py:2578 +#: part/models.py:2580 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2583 part/templates/part/upload_bom.html:56 +#: part/models.py:2585 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:980 msgid "Allow Variants" msgstr "" -#: part/models.py:2584 +#: part/models.py:2586 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2662 stock/models.py:460 +#: part/models.py:2664 stock/models.py:460 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2671 part/models.py:2673 +#: part/models.py:2673 part/models.py:2675 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2778 +#: part/models.py:2780 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2799 +#: part/models.py:2801 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:2812 +#: part/models.py:2814 msgid "Parent BOM item" msgstr "" -#: part/models.py:2820 +#: part/models.py:2822 msgid "Substitute part" msgstr "" -#: part/models.py:2831 +#: part/models.py:2833 msgid "Part 1" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Part 2" msgstr "" -#: part/models.py:2835 +#: part/models.py:2837 msgid "Select Related Part" msgstr "" -#: part/models.py:2866 +#: part/models.py:2868 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4829,7 +4822,7 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:114 stock/templates/stock/item.html:58 +#: part/templates/part/detail.html:114 stock/templates/stock/item.html:53 msgid "Sales Order Allocations" msgstr "" @@ -4905,7 +4898,7 @@ msgstr "" msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:332 stock/templates/stock/item.html:43 +#: part/templates/part/detail.html:332 stock/templates/stock/item.html:38 msgid "Build Order Allocations" msgstr "" @@ -5414,83 +5407,59 @@ msgstr "" msgid "{title} v{version}" msgstr "" -#: part/views.py:77 +#: part/views.py:74 msgid "Set Part Category" msgstr "设置商品类别" -#: part/views.py:125 +#: part/views.py:122 #, python-brace-format msgid "Set category for {n} parts" msgstr "为 {n} 个商品设置类别" -#: part/views.py:196 +#: part/views.py:193 msgid "Match References" msgstr "" -#: part/views.py:497 +#: part/views.py:494 msgid "None" msgstr "" -#: part/views.py:559 +#: part/views.py:556 msgid "Part QR Code" msgstr "商品二维码" -#: part/views.py:653 +#: part/views.py:650 msgid "Select Part Image" msgstr "选择商品图像" -#: part/views.py:679 +#: part/views.py:676 msgid "Updated part image" msgstr "更新商品图像" -#: part/views.py:682 +#: part/views.py:679 msgid "Part image not found" msgstr "未找到商品图像" -#: part/views.py:771 +#: part/views.py:768 msgid "Confirm Part Deletion" msgstr "确认删除商品" -#: part/views.py:779 +#: part/views.py:776 msgid "Part was deleted" msgstr "商品已删除" -#: part/views.py:788 +#: part/views.py:785 msgid "Part Pricing" msgstr "商品价格" -#: part/views.py:938 -msgid "Create Part Parameter Template" -msgstr "" - -#: part/views.py:946 -msgid "Edit Part Parameter Template" -msgstr "" - -#: part/views.py:953 -msgid "Delete Part Parameter Template" -msgstr "" - -#: part/views.py:1002 +#: part/views.py:976 msgid "Delete Part Category" msgstr "删除商品类别" -#: part/views.py:1009 +#: part/views.py:983 msgid "Part category was deleted" msgstr "商品类别已删除" -#: part/views.py:1018 -msgid "Create Category Parameter Template" -msgstr "创建类别参数模板" - -#: part/views.py:1118 -msgid "Edit Category Parameter Template" -msgstr "编辑类别参数模板" - -#: part/views.py:1179 -msgid "Delete Category Parameter Template" -msgstr "删除类别参数模板" - #: plugin/apps.py:56 msgid "Your enviroment has an outdated git version. This prevents InvenTree from loading plugin details." msgstr "" @@ -5797,12 +5766,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2067 +#: stock/models.py:2068 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2073 +#: stock/models.py:2074 msgid "Result" msgstr "" @@ -5832,15 +5801,15 @@ msgstr "" msgid "Serial" msgstr "" -#: stock/api.py:499 +#: stock/api.py:504 msgid "Quantity is required" msgstr "" -#: stock/api.py:506 +#: stock/api.py:511 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:531 +#: stock/api.py:536 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" @@ -5964,7 +5933,7 @@ msgstr "" msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:714 stock/templates/stock/item.html:137 +#: stock/models.py:714 stock/templates/stock/item.html:132 msgid "Stock Item Notes" msgstr "" @@ -5976,105 +5945,105 @@ msgstr "" msgid "Converted to part" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1230 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1236 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1242 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1244 +#: stock/models.py:1245 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1247 +#: stock/models.py:1248 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1254 +#: stock/models.py:1255 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1320 +#: stock/models.py:1321 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1323 +#: stock/models.py:1324 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1326 +#: stock/models.py:1327 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1329 +#: stock/models.py:1330 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1332 +#: stock/models.py:1333 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1335 +#: stock/models.py:1336 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1342 stock/serializers.py:866 +#: stock/models.py:1343 stock/serializers.py:908 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1346 +#: stock/models.py:1347 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1350 +#: stock/models.py:1351 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1354 +#: stock/models.py:1355 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1523 +#: stock/models.py:1524 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:1985 +#: stock/models.py:1986 msgid "Entry notes" msgstr "" -#: stock/models.py:2043 +#: stock/models.py:2044 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2049 +#: stock/models.py:2050 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2068 +#: stock/models.py:2069 msgid "Test name" msgstr "" -#: stock/models.py:2074 +#: stock/models.py:2075 msgid "Test result" msgstr "" -#: stock/models.py:2080 +#: stock/models.py:2081 msgid "Test output value" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2088 msgid "Test result attachment" msgstr "" -#: stock/models.py:2093 +#: stock/models.py:2094 msgid "Test notes" msgstr "" @@ -6095,7 +6064,7 @@ msgstr "" msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:309 stock/serializers.py:823 stock/serializers.py:1056 +#: stock/serializers.py:309 stock/serializers.py:865 stock/serializers.py:1098 msgid "Destination stock location" msgstr "" @@ -6127,67 +6096,71 @@ msgstr "" msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:445 +#: stock/serializers.py:445 stock/serializers.py:487 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:678 +#: stock/serializers.py:482 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:720 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:682 +#: stock/serializers.py:724 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:686 +#: stock/serializers.py:728 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:717 +#: stock/serializers.py:759 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:723 +#: stock/serializers.py:765 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:731 +#: stock/serializers.py:773 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:741 stock/serializers.py:972 +#: stock/serializers.py:783 stock/serializers.py:1014 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:830 +#: stock/serializers.py:872 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:835 +#: stock/serializers.py:877 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:836 +#: stock/serializers.py:878 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:841 +#: stock/serializers.py:883 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:842 +#: stock/serializers.py:884 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:852 +#: stock/serializers.py:894 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:934 +#: stock/serializers.py:976 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:962 +#: stock/serializers.py:1004 msgid "Stock transaction notes" msgstr "" @@ -6195,44 +6168,40 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:22 -msgid "New Entry" -msgstr "" - -#: stock/templates/stock/item.html:74 +#: stock/templates/stock/item.html:69 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:82 +#: stock/templates/stock/item.html:77 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:91 +#: stock/templates/stock/item.html:86 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:95 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:99 +#: stock/templates/stock/item.html:94 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:103 +#: stock/templates/stock/item.html:98 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:152 +#: stock/templates/stock/item.html:147 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:156 templates/js/translated/stock.js:2733 +#: stock/templates/stock/item.html:151 templates/js/translated/stock.js:2733 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1455 +#: stock/templates/stock/item.html:292 templates/js/translated/stock.js:1455 msgid "Add Test Result" msgstr "" @@ -6435,6 +6404,10 @@ msgstr "" msgid "Edit Stock Status" msgstr "" +#: stock/templates/stock/item_base.html:646 +msgid "Return to Stock" +msgstr "" + #: stock/templates/stock/item_delete.html:9 msgid "Are you sure you want to delete this stock item?" msgstr "" @@ -6556,7 +6529,7 @@ msgstr "" msgid "Child Items" msgstr "" -#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:213 +#: stock/templates/stock/stockitem_convert.html:7 stock/views.py:182 msgid "Convert Stock Item" msgstr "" @@ -6577,62 +6550,34 @@ msgstr "警告" msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/tracking_delete.html:6 -msgid "Are you sure you want to delete this stock tracking entry?" -msgstr "" - -#: stock/views.py:115 +#: stock/views.py:113 msgid "Stock Location QR code" msgstr "仓储地点二维码" -#: stock/views.py:132 -msgid "Return to Stock" -msgstr "" - -#: stock/views.py:141 -msgid "Specify a valid location" -msgstr "指定一个有效仓储地点" - -#: stock/views.py:153 -msgid "Stock item returned from customer" -msgstr "" - -#: stock/views.py:162 +#: stock/views.py:131 msgid "Delete All Test Data" msgstr "" -#: stock/views.py:180 +#: stock/views.py:149 msgid "Confirm test data deletion" msgstr "" -#: stock/views.py:181 +#: stock/views.py:150 msgid "Check the confirmation box" msgstr "选中确认框" -#: stock/views.py:196 +#: stock/views.py:165 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:247 +#: stock/views.py:216 msgid "Delete Stock Location" msgstr "删除仓储地点" -#: stock/views.py:260 +#: stock/views.py:229 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:271 -msgid "Delete Stock Tracking Entry" -msgstr "" - -#: stock/views.py:278 -msgid "Edit Stock Tracking Entry" -msgstr "" - -#: stock/views.py:286 -msgid "Add Stock Tracking Entry" -msgstr "" - #: templates/403.html:6 templates/403.html:12 msgid "Permission Denied" msgstr "" @@ -6764,7 +6709,7 @@ msgid "Notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:51 -#: templates/InvenTree/settings/settings.html:321 +#: templates/InvenTree/settings/settings.html:340 msgid "ID" msgstr "" @@ -7038,19 +6983,43 @@ msgid "No category parameter templates found" msgstr "未找到类别参数模板" #: templates/InvenTree/settings/settings.html:238 -#: templates/InvenTree/settings/settings.html:337 +#: templates/InvenTree/settings/settings.html:356 msgid "Edit Template" msgstr "编辑模板" #: templates/InvenTree/settings/settings.html:239 -#: templates/InvenTree/settings/settings.html:338 +#: templates/InvenTree/settings/settings.html:357 msgid "Delete Template" msgstr "删除模板" -#: templates/InvenTree/settings/settings.html:317 +#: templates/InvenTree/settings/settings.html:279 +msgid "Create Category Parameter Template" +msgstr "创建类别参数模板" + +#: templates/InvenTree/settings/settings.html:324 +msgid "Delete Category Parameter Template" +msgstr "删除类别参数模板" + +#: templates/InvenTree/settings/settings.html:336 msgid "No part parameter templates found" msgstr "未找到商品参数模板" +#: templates/InvenTree/settings/settings.html:374 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:392 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings.html:406 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/InvenTree/settings/settings.html:414 +msgid "Delete Part Parameter Template" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" From 7b4d0605b8edb31c63895ae9bd902d0e7121b0d0 Mon Sep 17 00:00:00 2001 From: Matt Brown Date: Mon, 6 Jun 2022 20:57:21 +1200 Subject: [PATCH 09/13] Fix has_complete_bom_pricing logic errors (#3140) * Fix has_complete_bom_pricing logic errors There are two logic errors in this property method that have been present since c6fd228. 1) The get_setting method needs to be called on the InventTreeSetting class in common.models, not on the module itself. 2) You cannot call a property method directly passing an argument in Python, so the call to has_pricing_info is invalid and always fails. Given that has_complete_bom_pricing is/was the only user of that property anyway, fix this by just internalising the logic from that property in the method directly. * style nit: use implicit checking for bools has_complete_bom_pricing is a boolean property, the preferred pythonic style for if comparisons of this type is not to complete directly to == False, etc and rely on the implicit truthiness of the type. --- InvenTree/part/models.py | 9 ++------- InvenTree/part/templates/part/part_pricing.html | 2 +- InvenTree/part/templates/part/prices.html | 2 +- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index ebe9f882d6..c900ffd1e7 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -1529,17 +1529,12 @@ class Part(MetadataMixin, MPTTModel): """Return the number of supplier parts available for this part.""" return self.supplier_parts.count() - @property - def has_pricing_info(self, internal=False): - """Return true if there is pricing information for this part.""" - return self.get_price_range(internal=internal) is not None - @property def has_complete_bom_pricing(self): """Return true if there is pricing information for each item in the BOM.""" - use_internal = common.models.get_setting('PART_BOM_USE_INTERNAL_PRICE', False) + use_internal = common.models.InvenTreeSetting.get_setting('PART_BOM_USE_INTERNAL_PRICE', False) for item in self.get_bom_items().all().select_related('sub_part'): - if not item.sub_part.has_pricing_info(use_internal): + if item.sub_part.get_price_range(internal=use_internal) is None: return False return True diff --git a/InvenTree/part/templates/part/part_pricing.html b/InvenTree/part/templates/part/part_pricing.html index 9ec80882af..f61df368d4 100644 --- a/InvenTree/part/templates/part/part_pricing.html +++ b/InvenTree/part/templates/part/part_pricing.html @@ -75,7 +75,7 @@ {% endif %} {% endif %} - {% if part.has_complete_bom_pricing == False %} + {% if not part.has_complete_bom_pricing %} {% trans 'Note: BOM pricing is incomplete for this part' %} diff --git a/InvenTree/part/templates/part/prices.html b/InvenTree/part/templates/part/prices.html index 6deaa3d51c..13761f4ca1 100644 --- a/InvenTree/part/templates/part/prices.html +++ b/InvenTree/part/templates/part/prices.html @@ -83,7 +83,7 @@ {% endif %} {% endif %} - {% if part.has_complete_bom_pricing == False %} + {% if not part.has_complete_bom_pricing %} {% trans 'Note: BOM pricing is incomplete for this part' %} From 1e6bdfbcab89e83e6b2d1119a7fc198a0572569e Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 6 Jun 2022 19:12:29 +1000 Subject: [PATCH 10/13] Overdue order notification (#3114) * Adds a background task to notify users when a PurchaseOrder becomes overdue * Schedule the overdue purchaseorder check to occur daily * Allow notifications to be sent to "Owner" instances - Extract user information from the Owner instance * add unit test to ensure notifications are sent for overdue purchase orders * Adds notification for overdue sales orders * Clean up notification display panel - Simplify rendering - Order "newest at top" - Element alignment tweaks * style fixes * More style fixes * Tweak notification padding * Fix import order * Adds task to notify user of overdue build orders * Adds unit tests for build order notifications * Refactor subject line for emails: - Use the configured instance title as a prefix for the subject line * Add email template for overdue build orders * Fix unit tests to accommodate new default value * Logic error fix --- InvenTree/InvenTree/apps.py | 19 +++ InvenTree/build/tasks.py | 65 ++++++++- InvenTree/build/test_build.py | 30 +++- InvenTree/common/api.py | 1 + InvenTree/common/models.py | 2 +- InvenTree/common/notifications.py | 30 +++- InvenTree/common/tests.py | 4 +- InvenTree/order/tasks.py | 136 ++++++++++++++++++ InvenTree/order/test_sales_order.py | 27 +++- InvenTree/order/tests.py | 42 +++++- InvenTree/part/tasks.py | 2 +- InvenTree/part/test_part.py | 2 +- .../builtin/integration/core_notifications.py | 11 +- .../templates/email/overdue_build_order.html | 24 ++++ .../email/overdue_purchase_order.html | 24 ++++ .../templates/email/overdue_sales_order.html | 24 ++++ .../templates/js/translated/notification.js | 18 +-- 17 files changed, 439 insertions(+), 22 deletions(-) create mode 100644 InvenTree/order/tasks.py create mode 100644 InvenTree/templates/email/overdue_build_order.html create mode 100644 InvenTree/templates/email/overdue_purchase_order.html create mode 100644 InvenTree/templates/email/overdue_sales_order.html diff --git a/InvenTree/InvenTree/apps.py b/InvenTree/InvenTree/apps.py index 764f1748a6..3ec084a2d1 100644 --- a/InvenTree/InvenTree/apps.py +++ b/InvenTree/InvenTree/apps.py @@ -57,6 +57,7 @@ class InvenTreeConfig(AppConfig): try: from django_q.models import Schedule except AppRegistryNotReady: # pragma: no cover + logger.warning("Cannot start background tasks - app registry not ready") return logger.info("Starting background tasks...") @@ -98,6 +99,24 @@ class InvenTreeConfig(AppConfig): schedule_type=Schedule.DAILY, ) + # Check for overdue purchase orders + InvenTree.tasks.schedule_task( + 'order.tasks.check_overdue_purchase_orders', + schedule_type=Schedule.DAILY + ) + + # Check for overdue sales orders + InvenTree.tasks.schedule_task( + 'order.tasks.check_overdue_sales_orders', + schedule_type=Schedule.DAILY, + ) + + # Check for overdue build orders + InvenTree.tasks.schedule_task( + 'build.tasks.check_overdue_build_orders', + schedule_type=Schedule.DAILY + ) + def update_exchange_rates(self): # pragma: no cover """Update exchange rates each time the server is started. diff --git a/InvenTree/build/tasks.py b/InvenTree/build/tasks.py index ef32fc73ee..fcda1f8bff 100644 --- a/InvenTree/build/tasks.py +++ b/InvenTree/build/tasks.py @@ -1,5 +1,6 @@ """Background task definitions for the BuildOrder app""" +from datetime import datetime, timedelta from decimal import Decimal import logging @@ -8,9 +9,12 @@ from django.template.loader import render_to_string from allauth.account.models import EmailAddress +from plugin.events import trigger_event +import common.notifications import build.models import InvenTree.helpers import InvenTree.tasks +from InvenTree.status_codes import BuildStatus from InvenTree.ready import isImportingData import part.models as part_models @@ -93,8 +97,67 @@ def check_build_stock(build: build.models.Build): # Render the HTML message html_message = render_to_string('email/build_order_required_stock.html', context) - subject = "[InvenTree] " + _("Stock required for build order") + subject = _("Stock required for build order") recipients = emails.values_list('email', flat=True) InvenTree.tasks.send_email(subject, '', recipients, html_message=html_message) + + +def notify_overdue_build_order(bo: build.models.Build): + """Notify appropriate users that a Build has just become 'overdue'""" + + targets = [] + + if bo.issued_by: + targets.append(bo.issued_by) + + if bo.responsible: + targets.append(bo.responsible) + + name = _('Overdue Build Order') + + context = { + 'order': bo, + 'name': name, + 'message': _(f"Build order {bo} is now overdue"), + 'link': InvenTree.helpers.construct_absolute_url( + bo.get_absolute_url(), + ), + 'template': { + 'html': 'email/overdue_build_order.html', + 'subject': name, + } + } + + event_name = 'build.overdue_build_order' + + # Send a notification to the appropriate users + common.notifications.trigger_notification( + bo, + event_name, + targets=targets, + context=context + ) + + # Register a matching event to the plugin system + trigger_event(event_name, build_order=bo.pk) + + +def check_overdue_build_orders(): + """Check if any outstanding BuildOrders have just become overdue + + - This check is performed daily + - Look at the 'target_date' of any outstanding BuildOrder objects + - If the 'target_date' expired *yesterday* then the order is just out of date + """ + + yesterday = datetime.now().date() - timedelta(days=1) + + overdue_orders = build.models.Build.objects.filter( + target_date=yesterday, + status__in=BuildStatus.ACTIVE_CODES + ) + + for bo in overdue_orders: + notify_overdue_build_order(bo) diff --git a/InvenTree/build/test_build.py b/InvenTree/build/test_build.py index e17103ae36..cd411df6b1 100644 --- a/InvenTree/build/test_build.py +++ b/InvenTree/build/test_build.py @@ -1,11 +1,16 @@ """Unit tests for the 'build' models""" +from datetime import datetime, timedelta + from django.test import TestCase +from django.contrib.auth import get_user_model from django.core.exceptions import ValidationError from InvenTree import status_codes as status +import common.models +import build.tasks from build.models import Build, BuildItem, get_next_build_number from part.models import Part, BomItem, BomItemSubstitute from stock.models import StockItem @@ -14,6 +19,10 @@ from stock.models import StockItem class BuildTestBase(TestCase): """Run some tests to ensure that the Build model is working properly.""" + fixtures = [ + 'users', + ] + def setUp(self): """Initialize data to use for these tests. @@ -84,7 +93,8 @@ class BuildTestBase(TestCase): reference=ref, title="This is a build", part=self.assembly, - quantity=10 + quantity=10, + issued_by=get_user_model().objects.get(pk=1), ) # Create some build output (StockItem) objects @@ -450,8 +460,6 @@ class AutoAllocationTests(BuildTestBase): substitutes=True, ) - # self.assertTrue(self.build.are_untracked_parts_allocated()) - # self.assertEqual(self.build.allocated_stock.count(), 8) self.assertEqual(self.build.unallocated_quantity(self.bom_item_1), 0) self.assertEqual(self.build.unallocated_quantity(self.bom_item_2), 0) @@ -471,3 +479,19 @@ class AutoAllocationTests(BuildTestBase): self.assertEqual(self.build.unallocated_quantity(self.bom_item_1), 0) self.assertEqual(self.build.unallocated_quantity(self.bom_item_2), 0) + + def test_overdue_notification(self): + """Test sending of notifications when a build order is overdue.""" + + self.build.target_date = datetime.now().date() - timedelta(days=1) + self.build.save() + + # Check for overdue orders + build.tasks.check_overdue_build_orders() + + message = common.models.NotificationMessage.objects.get( + category='build.overdue_build_order', + user__id=1, + ) + + self.assertEqual(message.name, 'Overdue Build Order') diff --git a/InvenTree/common/api.py b/InvenTree/common/api.py index 0323778129..afc0b1272b 100644 --- a/InvenTree/common/api.py +++ b/InvenTree/common/api.py @@ -274,6 +274,7 @@ class NotificationList(generics.ListAPIView): 'category', 'name', 'read', + 'creation', ] search_fields = [ diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index b48e5ff1da..35693ee56e 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -710,7 +710,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'INVENTREE_INSTANCE': { 'name': _('Server Instance Name'), - 'default': 'InvenTree server', + 'default': 'InvenTree', 'description': _('String descriptor for the server instance'), }, diff --git a/InvenTree/common/notifications.py b/InvenTree/common/notifications.py index 4003276763..13d0450043 100644 --- a/InvenTree/common/notifications.py +++ b/InvenTree/common/notifications.py @@ -3,11 +3,15 @@ import logging from datetime import timedelta +from django.contrib.auth import get_user_model +from django.contrib.auth.models import Group + from common.models import NotificationEntry, NotificationMessage from InvenTree.helpers import inheritors from InvenTree.ready import isImportingData from plugin import registry from plugin.models import NotificationUserSetting +from users.models import Owner logger = logging.getLogger('inventree') @@ -266,7 +270,7 @@ def trigger_notification(obj, category=None, obj_ref='pk', **kwargs): if isImportingData(): return - # Resolve objekt reference + # Resolve object reference obj_ref_value = getattr(obj, obj_ref) # Try with some defaults @@ -285,11 +289,33 @@ def trigger_notification(obj, category=None, obj_ref='pk', **kwargs): return logger.info(f"Gathering users for notification '{category}'") + # Collect possible targets if not targets: targets = target_fnc(*target_args, **target_kwargs) + # Convert list of targets to a list of users + # (targets may include 'owner' or 'group' classes) + target_users = set() + if targets: + for target in targets: + # User instance is provided + if isinstance(target, get_user_model()): + target_users.add(target) + # Group instance is provided + elif isinstance(target, Group): + for user in get_user_model().objects.filter(groups__name=target.name): + target_users.add(user) + # Owner instance (either 'user' or 'group' is provided) + elif isinstance(target, Owner): + for owner in target.get_related_owners(include_group=False): + target_users.add(owner.owner) + # Unhandled type + else: + logger.error(f"Unknown target passed to trigger_notification method: {target}") + + if target_users: logger.info(f"Sending notification '{category}' for '{str(obj)}'") # Collect possible methods @@ -301,7 +327,7 @@ def trigger_notification(obj, category=None, obj_ref='pk', **kwargs): for method in delivery_methods: logger.info(f"Triggering notification method '{method.METHOD_NAME}'") try: - deliver_notification(method, obj, category, targets, context) + deliver_notification(method, obj, category, target_users, context) except NotImplementedError as error: # Allow any single notification method to fail, without failing the others logger.error(error) diff --git a/InvenTree/common/tests.py b/InvenTree/common/tests.py index b5e4ee330c..f0f06a3e7c 100644 --- a/InvenTree/common/tests.py +++ b/InvenTree/common/tests.py @@ -78,7 +78,7 @@ class SettingsTest(InvenTreeTestCase): # check as_int self.assertEqual(stale_days.as_int(), 0) - self.assertEqual(instance_obj.as_int(), 'InvenTree server') # not an int -> return default + self.assertEqual(instance_obj.as_int(), 'InvenTree') # not an int -> return default # check as_bool self.assertEqual(report_test_obj.as_bool(), True) @@ -258,7 +258,7 @@ class GlobalSettingsApiTest(InvenTreeAPITestCase): # Access via the API, and the default value should be received response = self.get(url, expected_code=200) - self.assertEqual(response.data['value'], 'InvenTree server') + self.assertEqual(response.data['value'], 'InvenTree') # Now, the object should have been created in the DB self.patch( diff --git a/InvenTree/order/tasks.py b/InvenTree/order/tasks.py new file mode 100644 index 0000000000..103fc3cc46 --- /dev/null +++ b/InvenTree/order/tasks.py @@ -0,0 +1,136 @@ +"""Background tasks for the 'order' app""" + +from datetime import datetime, timedelta + +from django.utils.translation import gettext_lazy as _ + +import common.notifications +import InvenTree.helpers +import InvenTree.tasks +import order.models +from InvenTree.status_codes import PurchaseOrderStatus, SalesOrderStatus +from plugin.events import trigger_event + + +def notify_overdue_purchase_order(po: order.models.PurchaseOrder): + """Notify users that a PurchaseOrder has just become 'overdue'""" + + targets = [] + + if po.created_by: + targets.append(po.created_by) + + if po.responsible: + targets.append(po.responsible) + + name = _('Overdue Purchase Order') + + context = { + 'order': po, + 'name': name, + 'message': _(f'Purchase order {po} is now overdue'), + 'link': InvenTree.helpers.construct_absolute_url( + po.get_absolute_url(), + ), + 'template': { + 'html': 'email/overdue_purchase_order.html', + 'subject': name, + } + } + + event_name = 'order.overdue_purchase_order' + + # Send a notification to the appropriate users + common.notifications.trigger_notification( + po, + event_name, + targets=targets, + context=context, + ) + + # Register a matching event to the plugin system + trigger_event( + event_name, + purchase_order=po.pk, + ) + + +def check_overdue_purchase_orders(): + """Check if any outstanding PurchaseOrders have just become overdue: + + - This check is performed daily + - Look at the 'target_date' of any outstanding PurchaseOrder objects + - If the 'target_date' expired *yesterday* then the order is just out of date + """ + + yesterday = datetime.now().date() - timedelta(days=1) + + overdue_orders = order.models.PurchaseOrder.objects.filter( + target_date=yesterday, + status__in=PurchaseOrderStatus.OPEN + ) + + for po in overdue_orders: + notify_overdue_purchase_order(po) + + +def notify_overdue_sales_order(so: order.models.SalesOrder): + """Notify appropriate users that a SalesOrder has just become 'overdue'""" + + targets = [] + + if so.created_by: + targets.append(so.created_by) + + if so.responsible: + targets.append(so.responsible) + + name = _('Overdue Sales Order') + + context = { + 'order': so, + 'name': name, + 'message': _(f"Sales order {so} is now overdue"), + 'link': InvenTree.helpers.construct_absolute_url( + so.get_absolute_url(), + ), + 'template': { + 'html': 'email/overdue_sales_order.html', + 'subject': name, + } + } + + event_name = 'order.overdue_sales_order' + + # Send a notification to the appropriate users + common.notifications.trigger_notification( + so, + event_name, + targets=targets, + context=context, + ) + + # Register a matching event to the plugin system + trigger_event( + event_name, + sales_order=so.pk, + ) + + +def check_overdue_sales_orders(): + """Check if any outstanding SalesOrders have just become overdue + + - This check is performed daily + - Look at the 'target_date' of any outstanding SalesOrder objects + - If the 'target_date' expired *yesterday* then the order is just out of date + """ + + yesterday = datetime.now().date() - timedelta(days=1) + + overdue_orders = order.models.SalesOrder.objects.filter( + target_date=yesterday, + status__in=SalesOrderStatus.OPEN + ) + + for po in overdue_orders: + notify_overdue_sales_order(po) diff --git a/InvenTree/order/test_sales_order.py b/InvenTree/order/test_sales_order.py index aeb11f72bc..b0d570cef2 100644 --- a/InvenTree/order/test_sales_order.py +++ b/InvenTree/order/test_sales_order.py @@ -2,21 +2,29 @@ from datetime import datetime, timedelta +from django.contrib.auth import get_user_model +from django.contrib.auth.models import Group from django.core.exceptions import ValidationError from django.test import TestCase -from common.models import InvenTreeSetting +import order.tasks +from common.models import InvenTreeSetting, NotificationMessage from company.models import Company from InvenTree import status_codes as status from order.models import (SalesOrder, SalesOrderAllocation, SalesOrderLineItem, SalesOrderShipment) from part.models import Part from stock.models import StockItem +from users.models import Owner class SalesOrderTest(TestCase): """Run tests to ensure that the SalesOrder model is working correctly.""" + fixtures = [ + 'users', + ] + def setUp(self): """Initial setup for this set of unit tests""" # Create a Company to ship the goods to @@ -235,3 +243,20 @@ class SalesOrderTest(TestCase): # Shipment should have default reference of '1' self.assertEqual('1', order_2.pending_shipments()[0].reference) + + def test_overdue_notification(self): + """Test overdue sales order notification""" + + self.order.created_by = get_user_model().objects.get(pk=3) + self.order.responsible = Owner.create(obj=Group.objects.get(pk=2)) + self.order.target_date = datetime.now().date() - timedelta(days=1) + self.order.save() + + # Check for overdue sales orders + order.tasks.check_overdue_sales_orders() + + messages = NotificationMessage.objects.filter( + category='order.overdue_sales_order', + ) + + self.assertEqual(len(messages), 2) diff --git a/InvenTree/order/tests.py b/InvenTree/order/tests.py index b8fd945518..9b6077a14e 100644 --- a/InvenTree/order/tests.py +++ b/InvenTree/order/tests.py @@ -3,12 +3,17 @@ from datetime import datetime, timedelta import django.core.exceptions as django_exceptions +from django.contrib.auth import get_user_model +from django.contrib.auth.models import Group from django.test import TestCase +import common.models +import order.tasks from company.models import SupplierPart from InvenTree.status_codes import PurchaseOrderStatus from part.models import Part from stock.models import StockLocation +from users.models import Owner from .models import PurchaseOrder, PurchaseOrderLineItem @@ -24,7 +29,8 @@ class OrderTest(TestCase): 'part', 'location', 'stock', - 'order' + 'order', + 'users', ] def test_basics(self): @@ -197,3 +203,37 @@ class OrderTest(TestCase): order.receive_line_item(line, loc, line.quantity, user=None) self.assertEqual(order.status, PurchaseOrderStatus.COMPLETE) + + def test_overdue_notification(self): + """Test overdue purchase order notification + + Ensure that a notification is sent when a PurchaseOrder becomes overdue + """ + po = PurchaseOrder.objects.get(pk=1) + + # Created by 'sam' + po.created_by = get_user_model().objects.get(pk=4) + + # Responsible : 'Engineers' group + responsible = Owner.create(obj=Group.objects.get(pk=2)) + po.responsible = responsible + + # Target date = yesterday + po.target_date = datetime.now().date() - timedelta(days=1) + po.save() + + # Check for overdue purchase orders + order.tasks.check_overdue_purchase_orders() + + for user_id in [2, 3, 4]: + messages = common.models.NotificationMessage.objects.filter( + category='order.overdue_purchase_order', + user__id=user_id, + ) + + self.assertTrue(messages.exists()) + + msg = messages.first() + + self.assertEqual(msg.target_object_id, 1) + self.assertEqual(msg.name, 'Overdue Purchase Order') diff --git a/InvenTree/part/tasks.py b/InvenTree/part/tasks.py index db1443042a..fc932239a9 100644 --- a/InvenTree/part/tasks.py +++ b/InvenTree/part/tasks.py @@ -27,7 +27,7 @@ def notify_low_stock(part: part.models.Part): 'link': InvenTree.helpers.construct_absolute_url(part.get_absolute_url()), 'template': { 'html': 'email/low_stock_notification.html', - 'subject': "[InvenTree] " + name, + 'subject': name, }, } diff --git a/InvenTree/part/test_part.py b/InvenTree/part/test_part.py index 97e690c535..d11cc5d142 100644 --- a/InvenTree/part/test_part.py +++ b/InvenTree/part/test_part.py @@ -44,7 +44,7 @@ class TemplateTagTest(InvenTreeTestCase): def test_inventree_instance_name(self): """Test the 'instance name' setting""" - self.assertEqual(inventree_extras.inventree_instance_name(), 'InvenTree server') + self.assertEqual(inventree_extras.inventree_instance_name(), 'InvenTree') def test_inventree_base_url(self): """Test that the base URL tag returns correctly""" diff --git a/InvenTree/plugin/builtin/integration/core_notifications.py b/InvenTree/plugin/builtin/integration/core_notifications.py index d5c3cffd51..6c0cee5f02 100644 --- a/InvenTree/plugin/builtin/integration/core_notifications.py +++ b/InvenTree/plugin/builtin/integration/core_notifications.py @@ -5,6 +5,7 @@ from django.utils.translation import ugettext_lazy as _ from allauth.account.models import EmailAddress +import common.models import InvenTree.tasks from plugin import InvenTreePlugin from plugin.mixins import BulkNotificationMethod, SettingsMixin @@ -74,6 +75,14 @@ class CoreNotificationsPlugin(SettingsMixin, InvenTreePlugin): html_message = render_to_string(self.context['template']['html'], self.context) targets = self.targets.values_list('email', flat=True) - InvenTree.tasks.send_email(self.context['template']['subject'], '', targets, html_message=html_message) + # Prefix the 'instance title' to the email subject + instance_title = common.models.InvenTreeSetting.get_setting('INVENTREE_INSTANCE') + + subject = self.context['template'].get('subject', '') + + if instance_title: + subject = f'[{instance_title}] {subject}' + + InvenTree.tasks.send_email(subject, '', targets, html_message=html_message) return True diff --git a/InvenTree/templates/email/overdue_build_order.html b/InvenTree/templates/email/overdue_build_order.html new file mode 100644 index 0000000000..f5412f4fd3 --- /dev/null +++ b/InvenTree/templates/email/overdue_build_order.html @@ -0,0 +1,24 @@ +{% extends "email/email.html" %} + +{% load i18n %} +{% load inventree_extras %} + +{% block title %} +{{ message }} +{% if link %} +

    {% trans "Click on the following link to view this order" %}: {{ link }}

    +{% endif %} +{% endblock title %} + +{% block body %} + + {% trans "Build Order" %} + {% trans "Part" %} + + + + {{ order }} + {{ order.part.full_name }} + + +{% endblock body %} diff --git a/InvenTree/templates/email/overdue_purchase_order.html b/InvenTree/templates/email/overdue_purchase_order.html new file mode 100644 index 0000000000..bca6c8fb49 --- /dev/null +++ b/InvenTree/templates/email/overdue_purchase_order.html @@ -0,0 +1,24 @@ +{% extends "email/email.html" %} + +{% load i18n %} +{% load inventree_extras %} + +{% block title %} +{{ message }} +{% if link %} +

    {% trans "Click on the following link to view this order" %}: {{ link }}

    +{% endif %} +{% endblock title %} + +{% block body %} + + {% trans "Purchase Order" %} + {% trans "Supplier" %} + + + + {{ order }} + {{ order.supplier }} + + +{% endblock body %} diff --git a/InvenTree/templates/email/overdue_sales_order.html b/InvenTree/templates/email/overdue_sales_order.html new file mode 100644 index 0000000000..33c3cc24cc --- /dev/null +++ b/InvenTree/templates/email/overdue_sales_order.html @@ -0,0 +1,24 @@ +{% extends "email/email.html" %} + +{% load i18n %} +{% load inventree_extras %} + +{% block title %} +{{ message }} +{% if link %} +

    {% trans "Click on the following link to view this order" %}: {{ link }}

    +{% endif %} +{% endblock title %} + +{% block body %} + + {% trans "Sales Order" %} + {% trans "Customer" %} + + + + {{ order }} + {{ order.customer }} + + +{% endblock body %} diff --git a/InvenTree/templates/js/translated/notification.js b/InvenTree/templates/js/translated/notification.js index f88c8fbcbb..7c48eef695 100644 --- a/InvenTree/templates/js/translated/notification.js +++ b/InvenTree/templates/js/translated/notification.js @@ -238,7 +238,7 @@ function getReadEditButton(pk, state, small=false) { } var style = (small) ? 'btn-sm ' : ''; - return ``; + return ``; } /** @@ -252,6 +252,7 @@ function openNotificationPanel() { '/api/notifications/', { read: false, + ordering: '-creation', }, { success: function(response) { @@ -261,20 +262,21 @@ function openNotificationPanel() { // build up items response.forEach(function(item, index) { html += '
  • '; - // d-flex justify-content-between align-items-start - html += '
    '; - html += `${item.category}${item.name}`; - html += '
    '; + html += `
    `; + html += `${item.name}`; + html += getReadEditButton(item.pk, item.read, true); + html += `
    `; + if (item.target) { - var link_text = `${item.target.model}: ${item.target.name}`; + var link_text = `${item.target.name}`; if (item.target.link) { link_text = `${link_text}`; } html += link_text; } + html += '
    '; - html += `${item.age_human}`; - html += getReadEditButton(item.pk, item.read, true); + html += `${item.age_human}`; html += '
  • '; }); From 88a0e38b69abb0fa07ba2202c702341851272375 Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 6 Jun 2022 20:43:50 +1000 Subject: [PATCH 11/13] Fix "polarity" of modal form submit button (#3142) --- InvenTree/templates/js/translated/forms.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/InvenTree/templates/js/translated/forms.js b/InvenTree/templates/js/translated/forms.js index 5aeff3e80c..794c282e6e 100644 --- a/InvenTree/templates/js/translated/forms.js +++ b/InvenTree/templates/js/translated/forms.js @@ -639,13 +639,13 @@ function insertConfirmButton(options) { $(options.modal).find('#modal-footer-buttons').append(html); // Disable the 'submit' button - enableSubmitButton(options, true); + enableSubmitButton(options, false); // Trigger event $(options.modal).find('#modal-confirm').change(function() { var enabled = this.checked; - enableSubmitButton(options, !enabled); + enableSubmitButton(options, enabled); }); } From 121c5d107e1ad1f1d7cee9d2c8ca106a1c49c7ee Mon Sep 17 00:00:00 2001 From: Matt Brown Date: Mon, 6 Jun 2022 23:03:15 +1200 Subject: [PATCH 12/13] Separate unit cost and purchase price in BOM (#3141) It's possible for a part to have purchase price information, but not supplier pricing (aka unit prices), but the current BOM price display logic will only show the purchase prices when supplier prices are also available. It seems reasonable to separate these two pieces of information - even when no supplier pricing is available, seeing the purchase prices for BOM components is useful on its own. --- .../part/templates/part/part_pricing.html | 5 +++- InvenTree/part/templates/part/prices.html | 24 ++++++++++--------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/InvenTree/part/templates/part/part_pricing.html b/InvenTree/part/templates/part/part_pricing.html index f61df368d4..b6f45fa8e9 100644 --- a/InvenTree/part/templates/part/part_pricing.html +++ b/InvenTree/part/templates/part/part_pricing.html @@ -60,6 +60,7 @@ Max: {% include "price.html" with price=max_total_bom_price %} {% endif %} + {% endif %} {% if min_total_bom_purchase_price %} {% trans 'Unit Purchase Price' %} @@ -82,6 +83,8 @@ {% endif %} + + {% if min_total_bom_price or min_total_bom_purchase_price %} {% else %} @@ -122,7 +125,7 @@ {% endif %} -{% if min_unit_buy_price or min_unit_bom_price %} +{% if min_unit_buy_price or min_unit_bom_price or min_unit_bom_purchase_price %} {% else %}
    {% trans 'No pricing information is available for this part.' %} diff --git a/InvenTree/part/templates/part/prices.html b/InvenTree/part/templates/part/prices.html index 13761f4ca1..7ea93d6fdd 100644 --- a/InvenTree/part/templates/part/prices.html +++ b/InvenTree/part/templates/part/prices.html @@ -64,9 +64,9 @@ Max: {% include "price.html" with price=max_total_bom_price %} {% endif %} + {% endif %} - - {% if min_total_bom_purchase_price %} + {% if min_total_bom_purchase_price %} {% trans 'Unit Purchase Price' %} @@ -81,15 +81,17 @@ Max: {% include "price.html" with price=max_total_bom_purchase_price %} {% endif %} - {% endif %} + {% endif %} - {% if not part.has_complete_bom_pricing %} - - - {% trans 'Note: BOM pricing is incomplete for this part' %} - - - {% endif %} + {% if not part.has_complete_bom_pricing %} + + + {% trans 'Note: BOM pricing is incomplete for this part' %} + + + {% endif %} + + {% if min_total_bom_price or min_total_bom_purchase_price %} {% else %} @@ -131,7 +133,7 @@ {% endif %} - {% if min_unit_buy_price or min_unit_bom_price %} + {% if min_unit_buy_price or min_unit_bom_price or min_unit_bom_purchase_price %} {% else %}
    {% trans 'No pricing information is available for this part.' %} From ea83d4b2904ffeeebf0982a89b325cec9d1208cd Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 6 Jun 2022 21:27:19 +1000 Subject: [PATCH 13/13] Refactor stock item test result form for API (#3143) * Fix "polarity" of modal form submit button (cherry picked from commit 0e4550f28895af626715723e450792881f7fd882) * Use existing API functionality to delete all test results for a particular StockItem * Remove outdated forms / views --- InvenTree/InvenTree/forms.py | 54 +---------------------- InvenTree/InvenTree/urls.py | 4 +- InvenTree/InvenTree/views.py | 41 ++--------------- InvenTree/stock/templates/stock/item.html | 45 +++++++++++++++++-- InvenTree/stock/urls.py | 1 - InvenTree/stock/views.py | 38 ---------------- 6 files changed, 48 insertions(+), 135 deletions(-) diff --git a/InvenTree/InvenTree/forms.py b/InvenTree/InvenTree/forms.py index 7ee9c8634a..04e95120e4 100644 --- a/InvenTree/InvenTree/forms.py +++ b/InvenTree/InvenTree/forms.py @@ -16,13 +16,12 @@ from allauth.exceptions import ImmediateHttpResponse from allauth.socialaccount.adapter import DefaultSocialAccountAdapter from allauth_2fa.adapter import OTPAdapter from allauth_2fa.utils import user_has_valid_totp_device -from crispy_forms.bootstrap import (AppendedText, Div, PrependedAppendedText, - PrependedText, StrictButton) +from crispy_forms.bootstrap import (AppendedText, PrependedAppendedText, + PrependedText) from crispy_forms.helper import FormHelper from crispy_forms.layout import Field, Layout from common.models import InvenTreeSetting -from part.models import PartCategory logger = logging.getLogger('inventree') @@ -109,22 +108,6 @@ class HelperForm(forms.ModelForm): self.helper.layout = Layout(*layouts) -class ConfirmForm(forms.Form): - """Generic confirmation form.""" - - confirm = forms.BooleanField( - required=False, initial=False, - help_text=_("Confirm") - ) - - class Meta: - """Metaclass options.""" - - fields = [ - 'confirm' - ] - - class DeleteForm(forms.Form): """Generic deletion form which provides simple user confirmation.""" @@ -185,39 +168,6 @@ class SetPasswordForm(HelperForm): ] -class SettingCategorySelectForm(forms.ModelForm): - """Form for setting category settings.""" - - category = forms.ModelChoiceField(queryset=PartCategory.objects.all()) - - class Meta: - """Metaclass options.""" - - model = PartCategory - fields = [ - 'category' - ] - - def __init__(self, *args, **kwargs): - """Setup form layout.""" - super().__init__(*args, **kwargs) - - self.helper = FormHelper() - # Form rendering - self.helper.form_show_labels = False - self.helper.layout = Layout( - Div( - Div(Field('category'), - css_class='col-sm-6', - style='width: 70%;'), - Div(StrictButton(_('Select Category'), css_class='btn btn-primary', type='submit'), - css_class='col-sm-6', - style='width: 30%; padding-left: 0;'), - css_class='row', - ), - ) - - # override allauth class CustomSignupForm(SignupForm): """Override to use dynamic settings.""" diff --git a/InvenTree/InvenTree/urls.py b/InvenTree/InvenTree/urls.py index e1ac6ed1f3..897350e611 100644 --- a/InvenTree/InvenTree/urls.py +++ b/InvenTree/InvenTree/urls.py @@ -37,7 +37,7 @@ from .views import (AppearanceSelectView, CurrencyRefreshView, CustomSessionDeleteOtherView, CustomSessionDeleteView, DatabaseStatsView, DynamicJsView, EditUserView, IndexView, NotificationsView, SearchView, SetPasswordView, - SettingCategorySelectView, SettingsView, auth_request) + SettingsView, auth_request) admin.site.site_header = "InvenTree Admin" @@ -74,8 +74,6 @@ settings_urls = [ re_path(r'^appearance/?', AppearanceSelectView.as_view(), name='settings-appearance'), re_path(r'^currencies-refresh/', CurrencyRefreshView.as_view(), name='settings-currencies-refresh'), - re_path(r'^category/', SettingCategorySelectView.as_view(), name='settings-category'), - # Catch any other urls re_path(r'^.*$', SettingsView.as_view(template_name='InvenTree/settings/settings.html'), name='settings'), ] diff --git a/InvenTree/InvenTree/views.py b/InvenTree/InvenTree/views.py index 2088d5bc20..cb5d1be51f 100644 --- a/InvenTree/InvenTree/views.py +++ b/InvenTree/InvenTree/views.py @@ -17,8 +17,8 @@ from django.urls import reverse_lazy from django.utils.timezone import now from django.utils.translation import gettext_lazy as _ from django.views import View -from django.views.generic import (CreateView, DeleteView, DetailView, FormView, - ListView, UpdateView) +from django.views.generic import (CreateView, DeleteView, DetailView, ListView, + UpdateView) from django.views.generic.base import RedirectView, TemplateView from allauth.account.forms import AddEmailForm @@ -34,8 +34,7 @@ from common.settings import currency_code_default, currency_codes from part.models import PartCategory from users.models import RuleSet, check_user_role -from .forms import (DeleteForm, EditUserForm, SetPasswordForm, - SettingCategorySelectForm) +from .forms import DeleteForm, EditUserForm, SetPasswordForm from .helpers import str2bool @@ -801,40 +800,6 @@ class AppearanceSelectView(RedirectView): return redirect(reverse_lazy('settings')) -class SettingCategorySelectView(FormView): - """View for selecting categories in settings.""" - - form_class = SettingCategorySelectForm - success_url = reverse_lazy('settings-category') - template_name = "InvenTree/settings/category.html" - - def get_initial(self): - """Set category selection.""" - initial = super().get_initial() - - category = self.request.GET.get('category', None) - if category: - initial['category'] = category - - return initial - - def post(self, request, *args, **kwargs): - """Handle POST request (which contains category selection). - - Pass the selected category to the page template - """ - form = self.get_form() - - if form.is_valid(): - context = self.get_context_data() - - context['category'] = form.cleaned_data['category'] - - return super(SettingCategorySelectView, self).render_to_response(context) - - return self.form_invalid(form) - - class DatabaseStatsView(AjaxView): """View for displaying database statistics.""" diff --git a/InvenTree/stock/templates/stock/item.html b/InvenTree/stock/templates/stock/item.html index d0822b8105..e951428378 100644 --- a/InvenTree/stock/templates/stock/item.html +++ b/InvenTree/stock/templates/stock/item.html @@ -265,10 +265,49 @@ {% if user.is_staff %} $("#delete-test-results").click(function() { - launchModalForm( - "{% url 'stock-item-delete-test-data' item.id %}", + + var url = '{% url "api-stock-test-result-list" %}'; + + inventreeGet( + url, { - success: reloadTable, + stock_item: {{ item.pk }}, + }, + { + success: function(response) { + + var results = []; + + // Ensure that we are only deleting the correct test results + response.forEach(function(item) { + if (item.stock_item == {{ item.pk }}) { + results.push(item); + } + }); + + var html = ` +
    + {% trans "Delete all test results for this stock item" %} +
    `; + + constructFormBody({}, { + method: 'DELETE', + title: '{% trans "Delete Test Data" %}', + preFormContent: html, + onSubmit: function(fields, opts) { + inventreeMultiDelete( + url, + results, + { + modal: opts.modal, + success: function() { + reloadTable(); + } + } + ) + } + }); + } } ); }); diff --git a/InvenTree/stock/urls.py b/InvenTree/stock/urls.py index 4ed2733181..f338116d72 100644 --- a/InvenTree/stock/urls.py +++ b/InvenTree/stock/urls.py @@ -20,7 +20,6 @@ stock_item_detail_urls = [ re_path(r'^convert/', views.StockItemConvert.as_view(), name='stock-item-convert'), re_path(r'^delete/', views.StockItemDelete.as_view(), name='stock-item-delete'), re_path(r'^qr_code/', views.StockItemQRCode.as_view(), name='stock-item-qr'), - re_path(r'^delete_test_data/', views.StockItemDeleteTestData.as_view(), name='stock-item-delete-test-data'), # Anything else - direct to the item detail view re_path('^.*$', views.StockItemDetail.as_view(), name='stock-item-detail'), diff --git a/InvenTree/stock/views.py b/InvenTree/stock/views.py index 5277aad990..b16fd640de 100644 --- a/InvenTree/stock/views.py +++ b/InvenTree/stock/views.py @@ -6,8 +6,6 @@ from django.utils.translation import gettext_lazy as _ from django.views.generic import DetailView, ListView import common.settings -from InvenTree.forms import ConfirmForm -from InvenTree.helpers import str2bool from InvenTree.views import (AjaxDeleteView, AjaxUpdateView, InvenTreeRoleMixin, QRCodeView) from plugin.views import InvenTreePluginViewMixin @@ -123,42 +121,6 @@ class StockLocationQRCode(QRCodeView): return None -class StockItemDeleteTestData(AjaxUpdateView): - """View for deleting all test data.""" - - model = StockItem - form_class = ConfirmForm - ajax_form_title = _("Delete All Test Data") - - role_required = ['stock.change', 'stock.delete'] - - def get_form(self): - """Require confirm.""" - return ConfirmForm() - - def post(self, request, *args, **kwargs): - """Delete test data.""" - valid = False - - stock_item = StockItem.objects.get(pk=self.kwargs['pk']) - form = self.get_form() - - confirm = str2bool(request.POST.get('confirm', False)) - - if confirm is not True: - form.add_error('confirm', _('Confirm test data deletion')) - form.add_error(None, _('Check the confirmation box')) - else: - stock_item.test_results.all().delete() - valid = True - - data = { - 'form_valid': valid, - } - - return self.renderJsonResponse(request, form, data) - - class StockItemQRCode(QRCodeView): """View for displaying a QR code for a StockItem object."""