diff --git a/.github/workflows/qc_checks.yaml b/.github/workflows/qc_checks.yaml index 598f518f27..b1067c4bbd 100644 --- a/.github/workflows/qc_checks.yaml +++ b/.github/workflows/qc_checks.yaml @@ -156,6 +156,7 @@ jobs: env: INVENTREE_DB_NAME: ./inventree.sqlite INVENTREE_DB_ENGINE: sqlite3 + INVENTREE_PLUGINS_ENABLED: true steps: - name: Checkout Code @@ -204,6 +205,7 @@ jobs: INVENTREE_DB_PORT: 5432 INVENTREE_DEBUG: info INVENTREE_CACHE_HOST: localhost + INVENTREE_PLUGINS_ENABLED: true services: postgres: @@ -259,6 +261,7 @@ jobs: INVENTREE_DB_HOST: '127.0.0.1' INVENTREE_DB_PORT: 3306 INVENTREE_DEBUG: info + INVENTREE_PLUGINS_ENABLED: true services: mysql: diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000000..278e5139e5 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,25 @@ +# Marks all issues that do not receive activity stale starting 2022 +name: Mark stale issues and pull requests + +on: + schedule: + - cron: '24 11 * * *' + +jobs: + stale: + + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + + steps: + - uses: actions/stale@v3 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'This issue seems stale. Please react to show this is still important.' + stale-pr-message: 'This PR seems stale. Please react to show this is still important.' + stale-issue-label: 'no-activity' + stale-pr-label: 'no-activity' + start-date: '2022-01-01' + exempt-all-milestones: true diff --git a/InvenTree/InvenTree/management/commands/clean_settings.py b/InvenTree/InvenTree/management/commands/clean_settings.py index e0fd09e6c7..283416de29 100644 --- a/InvenTree/InvenTree/management/commands/clean_settings.py +++ b/InvenTree/InvenTree/management/commands/clean_settings.py @@ -2,9 +2,14 @@ Custom management command to cleanup old settings that are not defined anymore """ +import logging + from django.core.management.base import BaseCommand +logger = logging.getLogger('inventree') + + class Command(BaseCommand): """ Cleanup old (undefined) settings in the database @@ -12,27 +17,27 @@ class Command(BaseCommand): def handle(self, *args, **kwargs): - print("Collecting settings") + logger.info("Collecting settings") from common.models import InvenTreeSetting, InvenTreeUserSetting # general settings db_settings = InvenTreeSetting.objects.all() - model_settings = InvenTreeSetting.GLOBAL_SETTINGS + model_settings = InvenTreeSetting.SETTINGS # check if key exist and delete if not for setting in db_settings: if setting.key not in model_settings: setting.delete() - print(f"deleted setting '{setting.key}'") + logger.info(f"deleted setting '{setting.key}'") # user settings db_settings = InvenTreeUserSetting.objects.all() - model_settings = InvenTreeUserSetting.GLOBAL_SETTINGS + model_settings = InvenTreeUserSetting.SETTINGS # check if key exist and delete if not for setting in db_settings: if setting.key not in model_settings: setting.delete() - print(f"deleted user setting '{setting.key}'") + logger.info(f"deleted user setting '{setting.key}'") - print("checked all settings") + logger.info("checked all settings") diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index 89e60a597e..2f80844bf1 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -52,8 +52,6 @@ with open(cfg_filename, 'r') as cfg: # We will place any config files in the same directory as the config file config_dir = os.path.dirname(cfg_filename) -PLUGIN_FILE = get_plugin_file() - # Default action is to run the system in Debug mode # SECURITY WARNING: don't run with debug turned on in production! DEBUG = _is_true(get_setting( @@ -873,6 +871,14 @@ MARKDOWNIFY_BLEACH = False # Maintenance mode MAINTENANCE_MODE_RETRY_AFTER = 60 +# Are plugins enabled? +PLUGINS_ENABLED = _is_true(get_setting( + 'INVENTREE_PLUGINS_ENABLED', + CONFIG.get('plugins_enabled', False), +)) + +PLUGIN_FILE = get_plugin_file() + # Plugin Directories (local plugins will be loaded from these directories) PLUGIN_DIRS = ['plugin.builtin', ] diff --git a/InvenTree/InvenTree/static/css/inventree.css b/InvenTree/InvenTree/static/css/inventree.css index 317ebaa37b..3f6fffe19b 100644 --- a/InvenTree/InvenTree/static/css/inventree.css +++ b/InvenTree/InvenTree/static/css/inventree.css @@ -319,6 +319,7 @@ main { display: inline-block; *display: inline; zoom: 1; + padding-top: 3px; padding-left: 3px; padding-right: 3px; border: 1px solid #aaa; @@ -327,6 +328,7 @@ main { margin: 1px; margin-left: 5px; margin-right: 5px; + white-space: nowrap; } .filter-button { diff --git a/InvenTree/InvenTree/tasks.py b/InvenTree/InvenTree/tasks.py index 18c3bcc564..0a098e5f8c 100644 --- a/InvenTree/InvenTree/tasks.py +++ b/InvenTree/InvenTree/tasks.py @@ -64,51 +64,55 @@ def offload_task(taskname, *args, force_sync=False, **kwargs): try: from django_q.tasks import AsyncTask + + import importlib + from InvenTree.status import is_worker_running + + if is_worker_running() and not force_sync: + # Running as asynchronous task + try: + task = AsyncTask(taskname, *args, **kwargs) + task.run() + except ImportError: + logger.warning(f"WARNING: '{taskname}' not started - Function not found") + else: + # Split path + try: + app, mod, func = taskname.split('.') + app_mod = app + '.' + mod + except ValueError: + logger.warning(f"WARNING: '{taskname}' not started - Malformed function path") + return + + # Import module from app + try: + _mod = importlib.import_module(app_mod) + except ModuleNotFoundError: + logger.warning(f"WARNING: '{taskname}' not started - No module named '{app_mod}'") + return + + # Retrieve function + try: + _func = getattr(_mod, func) + except AttributeError: + # getattr does not work for local import + _func = None + + try: + if not _func: + _func = eval(func) + except NameError: + logger.warning(f"WARNING: '{taskname}' not started - No function named '{func}'") + return + + # Workers are not running: run it as synchronous task + _func(*args, **kwargs) + except (AppRegistryNotReady): - logger.warning("Could not offload task - app registry not ready") + logger.warning(f"Could not offload task '{taskname}' - app registry not ready") return - import importlib - from InvenTree.status import is_worker_running - - if is_worker_running() and not force_sync: - # Running as asynchronous task - try: - task = AsyncTask(taskname, *args, **kwargs) - task.run() - except ImportError: - logger.warning(f"WARNING: '{taskname}' not started - Function not found") - else: - # Split path - try: - app, mod, func = taskname.split('.') - app_mod = app + '.' + mod - except ValueError: - logger.warning(f"WARNING: '{taskname}' not started - Malformed function path") - return - - # Import module from app - try: - _mod = importlib.import_module(app_mod) - except ModuleNotFoundError: - logger.warning(f"WARNING: '{taskname}' not started - No module named '{app_mod}'") - return - - # Retrieve function - try: - _func = getattr(_mod, func) - except AttributeError: - # getattr does not work for local import - _func = None - - try: - if not _func: - _func = eval(func) - except NameError: - logger.warning(f"WARNING: '{taskname}' not started - No function named '{func}'") - return - - # Workers are not running: run it as synchronous task - _func(*args, **kwargs) + except (OperationalError, ProgrammingError): + logger.warning(f"Could not offload task '{taskname}' - database not ready") def heartbeat(): diff --git a/InvenTree/InvenTree/urls.py b/InvenTree/InvenTree/urls.py index f56315e49c..b40aed7680 100644 --- a/InvenTree/InvenTree/urls.py +++ b/InvenTree/InvenTree/urls.py @@ -53,7 +53,14 @@ from users.api import user_urls admin.site.site_header = "InvenTree Admin" -apipatterns = [ +apipatterns = [] + +if settings.PLUGINS_ENABLED: + apipatterns.append( + url(r'^plugin/', include(plugin_api_urls)) + ) + +apipatterns += [ url(r'^barcode/', include(barcode_api_urls)), url(r'^settings/', include(settings_api_urls)), url(r'^part/', include(part_api_urls)), @@ -64,7 +71,6 @@ apipatterns = [ url(r'^order/', include(order_api_urls)), url(r'^label/', include(label_api_urls)), url(r'^report/', include(report_api_urls)), - url(r'^plugin/', include(plugin_api_urls)), # User URLs url(r'^user/', include(user_urls)), @@ -72,8 +78,8 @@ apipatterns = [ # Plugin endpoints url(r'^action/', ActionPluginView.as_view(), name='api-action-plugin'), - # common endpoints - url(r'', include(common_api_urls)), + # Webhook enpoint + path('', include(common_api_urls)), # InvenTree information endpoint url(r'^$', InfoView.as_view(), name='api-inventree-info'), @@ -171,9 +177,6 @@ frontendpatterns = [ url(r'^search/', SearchView.as_view(), name='search'), url(r'^stats/', DatabaseStatsView.as_view(), name='stats'), - # plugin urls - get_plugin_urls(), # appends currently loaded plugin urls = None - # admin sites url(r'^admin/error_log/', include('error_report.urls')), url(r'^admin/shell/', include('django_admin_shell.urls')), @@ -192,6 +195,10 @@ frontendpatterns = [ url(r'^accounts/', include('allauth.urls')), # included urlpatterns ] +# Append custom plugin URLs (if plugin support is enabled) +if settings.PLUGINS_ENABLED: + frontendpatterns.append(get_plugin_urls()) + urlpatterns = [ url('', include(frontendpatterns)), url('', include(backendpatterns)), diff --git a/InvenTree/InvenTree/version.py b/InvenTree/InvenTree/version.py index 79bc44bc0e..1f8e372d39 100644 --- a/InvenTree/InvenTree/version.py +++ b/InvenTree/InvenTree/version.py @@ -12,11 +12,15 @@ import common.models INVENTREE_SW_VERSION = "0.6.0 dev" # InvenTree API version -INVENTREE_API_VERSION = 22 +INVENTREE_API_VERSION = 23 """ Increment this API version number whenever there is a significant change to the API that any clients need to know about +v23 -> 2022-02-02 + - Adds API endpoints for managing plugin classes + - Adds API endpoints for managing plugin settings + v22 -> 2021-12-20 - Adds API endpoint to "merge" multiple stock items diff --git a/InvenTree/build/api.py b/InvenTree/build/api.py index 4d47cf9076..733799f890 100644 --- a/InvenTree/build/api.py +++ b/InvenTree/build/api.py @@ -18,8 +18,7 @@ from InvenTree.filters import InvenTreeOrderingFilter from InvenTree.status_codes import BuildStatus from .models import Build, BuildItem, BuildOrderAttachment -from .serializers import BuildAttachmentSerializer, BuildCompleteSerializer, BuildSerializer, BuildItemSerializer -from .serializers import BuildAllocationSerializer, BuildUnallocationSerializer +import build.serializers from users.models import Owner @@ -80,7 +79,7 @@ class BuildList(generics.ListCreateAPIView): """ queryset = Build.objects.all() - serializer_class = BuildSerializer + serializer_class = build.serializers.BuildSerializer filterset_class = BuildFilter filter_backends = [ @@ -119,7 +118,7 @@ class BuildList(generics.ListCreateAPIView): queryset = super().get_queryset().select_related('part') - queryset = BuildSerializer.annotate_queryset(queryset) + queryset = build.serializers.BuildSerializer.annotate_queryset(queryset) return queryset @@ -203,7 +202,7 @@ class BuildDetail(generics.RetrieveUpdateAPIView): """ API endpoint for detail view of a Build object """ queryset = Build.objects.all() - serializer_class = BuildSerializer + serializer_class = build.serializers.BuildSerializer class BuildUnallocate(generics.CreateAPIView): @@ -217,7 +216,7 @@ class BuildUnallocate(generics.CreateAPIView): queryset = Build.objects.none() - serializer_class = BuildUnallocationSerializer + serializer_class = build.serializers.BuildUnallocationSerializer def get_serializer_context(self): @@ -233,14 +232,36 @@ class BuildUnallocate(generics.CreateAPIView): return ctx -class BuildComplete(generics.CreateAPIView): +class BuildOutputComplete(generics.CreateAPIView): """ API endpoint for completing build outputs """ queryset = Build.objects.none() - serializer_class = BuildCompleteSerializer + serializer_class = build.serializers.BuildOutputCompleteSerializer + + def get_serializer_context(self): + ctx = super().get_serializer_context() + + ctx['request'] = self.request + + try: + ctx['build'] = Build.objects.get(pk=self.kwargs.get('pk', None)) + except: + pass + + return ctx + + +class BuildFinish(generics.CreateAPIView): + """ + API endpoint for marking a build as finished (completed) + """ + + queryset = Build.objects.none() + + serializer_class = build.serializers.BuildCompleteSerializer def get_serializer_context(self): ctx = super().get_serializer_context() @@ -269,7 +290,7 @@ class BuildAllocate(generics.CreateAPIView): queryset = Build.objects.none() - serializer_class = BuildAllocationSerializer + serializer_class = build.serializers.BuildAllocationSerializer def get_serializer_context(self): """ @@ -294,7 +315,7 @@ class BuildItemDetail(generics.RetrieveUpdateDestroyAPIView): """ queryset = BuildItem.objects.all() - serializer_class = BuildItemSerializer + serializer_class = build.serializers.BuildItemSerializer class BuildItemList(generics.ListCreateAPIView): @@ -304,7 +325,7 @@ class BuildItemList(generics.ListCreateAPIView): - POST: Create a new BuildItem object """ - serializer_class = BuildItemSerializer + serializer_class = build.serializers.BuildItemSerializer def get_serializer(self, *args, **kwargs): @@ -373,7 +394,7 @@ class BuildAttachmentList(generics.ListCreateAPIView, AttachmentMixin): """ queryset = BuildOrderAttachment.objects.all() - serializer_class = BuildAttachmentSerializer + serializer_class = build.serializers.BuildAttachmentSerializer filter_backends = [ DjangoFilterBackend, @@ -390,7 +411,7 @@ class BuildAttachmentDetail(generics.RetrieveUpdateDestroyAPIView, AttachmentMix """ queryset = BuildOrderAttachment.objects.all() - serializer_class = BuildAttachmentSerializer + serializer_class = build.serializers.BuildAttachmentSerializer build_api_urls = [ @@ -410,7 +431,8 @@ build_api_urls = [ # Build Detail url(r'^(?P\d+)/', include([ url(r'^allocate/', BuildAllocate.as_view(), name='api-build-allocate'), - url(r'^complete/', BuildComplete.as_view(), name='api-build-complete'), + url(r'^complete/', BuildOutputComplete.as_view(), name='api-build-output-complete'), + url(r'^finish/', BuildFinish.as_view(), name='api-build-finish'), url(r'^unallocate/', BuildUnallocate.as_view(), name='api-build-unallocate'), url(r'^.*$', BuildDetail.as_view(), name='api-build-detail'), ])), diff --git a/InvenTree/build/forms.py b/InvenTree/build/forms.py index 19bf3566dc..43899ba819 100644 --- a/InvenTree/build/forms.py +++ b/InvenTree/build/forms.py @@ -83,24 +83,6 @@ class BuildOutputDeleteForm(HelperForm): ] -class CompleteBuildForm(HelperForm): - """ - Form for marking a build as complete - """ - - confirm = forms.BooleanField( - required=True, - label=_('Confirm'), - help_text=_('Mark build as complete'), - ) - - class Meta: - model = Build - fields = [ - 'confirm', - ] - - class CancelBuildForm(HelperForm): """ Form for cancelling a build """ diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py index 392c773e6b..8cad93352b 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -36,6 +36,8 @@ import InvenTree.fields import InvenTree.helpers import InvenTree.tasks +from plugin.events import trigger_event + from part import models as PartModels from stock import models as StockModels from users import models as UserModels @@ -555,7 +557,7 @@ class Build(MPTTModel, ReferenceIndexingMixin): if self.incomplete_count > 0: return False - if self.completed < self.quantity: + if self.remaining > 0: return False if not self.areUntrackedPartsFullyAllocated(): @@ -582,9 +584,12 @@ class Build(MPTTModel, ReferenceIndexingMixin): self.subtractUntrackedStock(user) # Ensure that there are no longer any BuildItem objects - # which point to thie Build Order + # which point to thisFcan Build Order self.allocated_stock.all().delete() + # Register an event + trigger_event('build.completed', id=self.pk) + @transaction.atomic def cancelBuild(self, user): """ Mark the Build as CANCELLED @@ -604,6 +609,8 @@ class Build(MPTTModel, ReferenceIndexingMixin): self.status = BuildStatus.CANCELLED self.save() + trigger_event('build.cancelled', id=self.pk) + @transaction.atomic def unallocateStock(self, bom_item=None, output=None): """ diff --git a/InvenTree/build/serializers.py b/InvenTree/build/serializers.py index 452864e3c4..fb34a40a16 100644 --- a/InvenTree/build/serializers.py +++ b/InvenTree/build/serializers.py @@ -165,7 +165,7 @@ class BuildOutputSerializer(serializers.Serializer): ] -class BuildCompleteSerializer(serializers.Serializer): +class BuildOutputCompleteSerializer(serializers.Serializer): """ DRF serializer for completing one or more build outputs """ @@ -240,6 +240,60 @@ class BuildCompleteSerializer(serializers.Serializer): ) +class BuildCompleteSerializer(serializers.Serializer): + """ + DRF serializer for marking a BuildOrder as complete + """ + + accept_unallocated = serializers.BooleanField( + label=_('Accept Unallocated'), + help_text=_('Accept that stock items have not been fully allocated to this build order'), + required=False, + default=False, + ) + + def validate_accept_unallocated(self, value): + + build = self.context['build'] + + if not build.areUntrackedPartsFullyAllocated() and not value: + raise ValidationError(_('Required stock has not been fully allocated')) + + return value + + accept_incomplete = serializers.BooleanField( + label=_('Accept Incomplete'), + help_text=_('Accept that the required number of build outputs have not been completed'), + required=False, + default=False, + ) + + def validate_accept_incomplete(self, value): + + build = self.context['build'] + + if build.remaining > 0 and not value: + raise ValidationError(_('Required build quantity has not been completed')) + + return value + + def validate(self, data): + + build = self.context['build'] + + if build.incomplete_count > 0: + raise ValidationError(_("Build order has incomplete outputs")) + + return data + + def save(self): + + request = self.context['request'] + build = self.context['build'] + + build.complete_build(request.user) + + class BuildUnallocationSerializer(serializers.Serializer): """ DRF serializer for unallocating stock from a BuildOrder diff --git a/InvenTree/build/templates/build/build_base.html b/InvenTree/build/templates/build/build_base.html index 48ef98b2b1..ae6ea6d4d3 100644 --- a/InvenTree/build/templates/build/build_base.html +++ b/InvenTree/build/templates/build/build_base.html @@ -221,16 +221,17 @@ src="{% static 'img/blank_image.png' %}" {% if build.incomplete_count > 0 %} showAlertDialog( '{% trans "Incomplete Outputs" %}', - '{% trans "Build Order cannot be completed as incomplete build outputs remain" %}' - ); - {% else %} - launchModalForm( - "{% url 'build-complete' build.id %}", + '{% trans "Build Order cannot be completed as incomplete build outputs remain" %}', { - reload: true, - submit_text: '{% trans "Complete Build" %}', + alert_style: 'danger', } ); + {% else %} + + completeBuildOrder({{ build.pk }}, { + allocated: {% if build.areUntrackedPartsFullyAllocated %}true{% else %}false{% endif %}, + completed: {% if build.remaining == 0 %}true{% else %}false{% endif %}, + }); {% endif %} }); diff --git a/InvenTree/build/templates/build/complete.html b/InvenTree/build/templates/build/complete.html deleted file mode 100644 index eeedc027dd..0000000000 --- a/InvenTree/build/templates/build/complete.html +++ /dev/null @@ -1,26 +0,0 @@ -{% extends "modal_form.html" %} -{% load i18n %} - -{% block pre_form_content %} - -{% if build.can_complete %} -
- {% trans "Build Order is complete" %} -
-{% else %} -
- {% trans "Build Order is incomplete" %}
- -
-{% endif %} -{% endblock %} \ No newline at end of file diff --git a/InvenTree/build/test_api.py b/InvenTree/build/test_api.py index e2b6448f2f..1e0c2b4792 100644 --- a/InvenTree/build/test_api.py +++ b/InvenTree/build/test_api.py @@ -38,7 +38,7 @@ class BuildAPITest(InvenTreeAPITestCase): super().setUp() -class BuildCompleteTest(BuildAPITest): +class BuildOutputCompleteTest(BuildAPITest): """ Unit testing for the build complete API endpoint """ @@ -49,7 +49,7 @@ class BuildCompleteTest(BuildAPITest): self.build = Build.objects.get(pk=1) - self.url = reverse('api-build-complete', kwargs={'pk': self.build.pk}) + self.url = reverse('api-build-output-complete', kwargs={'pk': self.build.pk}) def test_invalid(self): """ @@ -58,7 +58,7 @@ class BuildCompleteTest(BuildAPITest): # Test with an invalid build ID self.post( - reverse('api-build-complete', kwargs={'pk': 99999}), + reverse('api-build-output-complete', kwargs={'pk': 99999}), {}, expected_code=400 ) @@ -140,6 +140,9 @@ class BuildCompleteTest(BuildAPITest): Test build order completion """ + # Initially, build should not be able to be completed + self.assertFalse(self.build.can_complete) + # We start without any outputs assigned against the build self.assertEqual(self.build.incomplete_outputs.count(), 0) @@ -153,7 +156,7 @@ class BuildCompleteTest(BuildAPITest): self.assertEqual(self.build.completed, 0) # We shall complete 4 of these outputs - outputs = self.build.incomplete_outputs[0:4] + outputs = self.build.incomplete_outputs.all() self.post( self.url, @@ -165,19 +168,43 @@ class BuildCompleteTest(BuildAPITest): expected_code=201 ) - # There now should be 6 incomplete build outputs remaining - self.assertEqual(self.build.incomplete_outputs.count(), 6) + self.assertEqual(self.build.incomplete_outputs.count(), 0) - # And there should be 4 completed outputs + # And there should be 10 completed outputs outputs = self.build.complete_outputs - self.assertEqual(outputs.count(), 4) + self.assertEqual(outputs.count(), 10) for output in outputs: self.assertFalse(output.is_building) self.assertEqual(output.build, self.build) self.build.refresh_from_db() - self.assertEqual(self.build.completed, 40) + self.assertEqual(self.build.completed, 100) + + # Try to complete the build (it should fail) + finish_url = reverse('api-build-finish', kwargs={'pk': self.build.pk}) + + response = self.post( + finish_url, + {}, + expected_code=400 + ) + + self.assertTrue('accept_unallocated' in response.data) + + # Accept unallocated stock + response = self.post( + finish_url, + { + 'accept_unallocated': True, + }, + expected_code=201, + ) + + self.build.refresh_from_db() + + # Build should have been marked as complete + self.assertTrue(self.build.is_complete) class BuildAllocationTest(BuildAPITest): diff --git a/InvenTree/build/urls.py b/InvenTree/build/urls.py index 8ea339ae26..fecece232e 100644 --- a/InvenTree/build/urls.py +++ b/InvenTree/build/urls.py @@ -11,7 +11,6 @@ build_detail_urls = [ url(r'^delete/', views.BuildDelete.as_view(), name='build-delete'), url(r'^create-output/', views.BuildOutputCreate.as_view(), name='build-output-create'), url(r'^delete-output/', views.BuildOutputDelete.as_view(), name='build-output-delete'), - url(r'^complete/', views.BuildComplete.as_view(), name='build-complete'), url(r'^.*$', views.BuildDetail.as_view(), name='build-detail'), ] diff --git a/InvenTree/build/views.py b/InvenTree/build/views.py index 1d28cb8d50..1a933af835 100644 --- a/InvenTree/build/views.py +++ b/InvenTree/build/views.py @@ -246,39 +246,6 @@ class BuildOutputDelete(AjaxUpdateView): } -class BuildComplete(AjaxUpdateView): - """ - View to mark the build as complete. - - Requirements: - - There can be no outstanding build outputs - - The "completed" value must meet or exceed the "quantity" value - """ - - model = Build - form_class = forms.CompleteBuildForm - - ajax_form_title = _('Complete Build Order') - ajax_template_name = 'build/complete.html' - - def validate(self, build, form, **kwargs): - - if build.incomplete_count > 0: - form.add_error(None, _('Build order cannot be completed - incomplete outputs remain')) - - def save(self, build, form, **kwargs): - """ - Perform the build completion step - """ - - build.complete_build(self.request.user) - - def get_data(self): - return { - 'success': _('Completed build order') - } - - class BuildDetail(InvenTreeRoleMixin, DetailView): """ Detail view of a single Build object. diff --git a/InvenTree/common/admin.py b/InvenTree/common/admin.py index 627dd0be83..330edf1aed 100644 --- a/InvenTree/common/admin.py +++ b/InvenTree/common/admin.py @@ -38,6 +38,11 @@ class UserSettingsAdmin(ImportExportModelAdmin): return [] +class WebhookAdmin(ImportExportModelAdmin): + + list_display = ('endpoint_id', 'name', 'active', 'user') + + class NotificationEntryAdmin(admin.ModelAdmin): list_display = ('key', 'uid', 'updated', ) @@ -54,5 +59,7 @@ class NotificationMessageAdmin(admin.ModelAdmin): admin.site.register(common.models.InvenTreeSetting, SettingsAdmin) admin.site.register(common.models.InvenTreeUserSetting, UserSettingsAdmin) +admin.site.register(common.models.WebhookEndpoint, WebhookAdmin) +admin.site.register(common.models.WebhookMessage, ImportExportModelAdmin) admin.site.register(common.models.NotificationEntry, NotificationEntryAdmin) admin.site.register(common.models.NotificationMessage, NotificationMessageAdmin) diff --git a/InvenTree/common/api.py b/InvenTree/common/api.py index 03460d566f..566702786a 100644 --- a/InvenTree/common/api.py +++ b/InvenTree/common/api.py @@ -5,14 +5,102 @@ Provides a JSON API for common components. # -*- coding: utf-8 -*- from __future__ import unicode_literals +import json + +from django.http.response import HttpResponse +from django.utils.decorators import method_decorator +from django.urls import path +from django.views.decorators.csrf import csrf_exempt from django.conf.urls import url, include +from rest_framework.views import APIView +from rest_framework.exceptions import NotAcceptable, NotFound from django_filters.rest_framework import DjangoFilterBackend from rest_framework import filters, generics, permissions from rest_framework import serializers +from django_q.tasks import async_task import common.models import common.serializers +from InvenTree.helpers import inheritors + + +class CsrfExemptMixin(object): + """ + Exempts the view from CSRF requirements. + """ + + @method_decorator(csrf_exempt) + def dispatch(self, *args, **kwargs): + return super(CsrfExemptMixin, self).dispatch(*args, **kwargs) + + +class WebhookView(CsrfExemptMixin, APIView): + """ + Endpoint for receiving webhooks. + """ + authentication_classes = [] + permission_classes = [] + model_class = common.models.WebhookEndpoint + run_async = False + + def post(self, request, endpoint, *args, **kwargs): + # get webhook definition + self._get_webhook(endpoint, request, *args, **kwargs) + + # check headers + headers = request.headers + try: + payload = json.loads(request.body) + except json.decoder.JSONDecodeError as error: + raise NotAcceptable(error.msg) + + # validate + self.webhook.validate_token(payload, headers, request) + # process data + message = self.webhook.save_data(payload, headers, request) + if self.run_async: + async_task(self._process_payload, message.id) + else: + self._process_result( + self.webhook.process_payload(message, payload, headers), + message, + ) + + # return results + data = self.webhook.get_return(payload, headers, request) + return HttpResponse(data) + + def _process_payload(self, message_id): + message = common.models.WebhookMessage.objects.get(message_id=message_id) + self._process_result( + self.webhook.process_payload(message, message.body, message.header), + message, + ) + + def _process_result(self, result, message): + if result: + message.worked_on = result + message.save() + else: + message.delete() + + def _escalate_object(self, obj): + classes = inheritors(obj.__class__) + for cls in classes: + mdl_name = cls._meta.model_name + if hasattr(obj, mdl_name): + return getattr(obj, mdl_name) + return obj + + def _get_webhook(self, endpoint, request, *args, **kwargs): + try: + webhook = self.model_class.objects.get(endpoint_id=endpoint) + self.webhook = self._escalate_object(webhook) + self.webhook.init(request, *args, **kwargs) + return self.webhook.process_webhook() + except self.model_class.DoesNotExist: + raise NotFound() class SettingsList(generics.ListAPIView): @@ -181,7 +269,6 @@ class NotificationDetail(generics.RetrieveUpdateDestroyAPIView): queryset = common.models.NotificationMessage.objects.all() serializer_class = common.serializers.NotificationMessageSerializer - permission_classes = [ UserSettingsPermissions, ] @@ -249,6 +336,8 @@ settings_api_urls = [ ] common_api_urls = [ + # Webhooks + path('webhook//', WebhookView.as_view(), name='api-webhook'), # Notifications url(r'^notifications/', include([ diff --git a/InvenTree/common/migrations/0013_webhookendpoint_webhookmessage.py b/InvenTree/common/migrations/0013_webhookendpoint_webhookmessage.py new file mode 100644 index 0000000000..d926c8ef3f --- /dev/null +++ b/InvenTree/common/migrations/0013_webhookendpoint_webhookmessage.py @@ -0,0 +1,40 @@ +# Generated by Django 3.2.5 on 2021-11-19 21:34 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import uuid + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('common', '0012_notificationentry'), + ] + + operations = [ + migrations.CreateModel( + name='WebhookEndpoint', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('endpoint_id', models.CharField(default=uuid.uuid4, editable=False, help_text='Endpoint at which this webhook is received', max_length=255, verbose_name='Endpoint')), + ('name', models.CharField(blank=True, help_text='Name for this webhook', max_length=255, null=True, verbose_name='Name')), + ('active', models.BooleanField(default=True, help_text='Is this webhook active', verbose_name='Active')), + ('token', models.CharField(blank=True, default=uuid.uuid4, help_text='Token for access', max_length=255, null=True, verbose_name='Token')), + ('secret', models.CharField(blank=True, help_text='Shared secret for HMAC', max_length=255, null=True, verbose_name='Secret')), + ('user', models.ForeignKey(blank=True, help_text='User', null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='User')), + ], + ), + migrations.CreateModel( + name='WebhookMessage', + fields=[ + ('message_id', models.UUIDField(default=uuid.uuid4, editable=False, help_text='Unique identifier for this message', primary_key=True, serialize=False, verbose_name='Message ID')), + ('host', models.CharField(editable=False, help_text='Host from which this message was received', max_length=255, verbose_name='Host')), + ('header', models.CharField(blank=True, editable=False, help_text='Header of this message', max_length=255, null=True, verbose_name='Header')), + ('body', models.JSONField(blank=True, editable=False, help_text='Body of this message', null=True, verbose_name='Body')), + ('worked_on', models.BooleanField(default=False, help_text='Was the work on this message finished?', verbose_name='Worked on')), + ('endpoint', models.ForeignKey(blank=True, help_text='Endpoint on which this message was received', null=True, on_delete=django.db.models.deletion.SET_NULL, to='common.webhookendpoint', verbose_name='Endpoint')), + ], + ), + ] diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index d194f96118..7cf3098e68 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -9,6 +9,12 @@ from __future__ import unicode_literals import os import decimal import math +import uuid +import hmac +import json +import hashlib +import base64 +from secrets import compare_digest from datetime import datetime, timedelta from django.db import models, transaction @@ -25,6 +31,8 @@ from djmoney.settings import CURRENCY_CHOICES from djmoney.contrib.exchange.models import convert_money from djmoney.contrib.exchange.exceptions import MissingRate +from rest_framework.exceptions import PermissionDenied + from django.utils.translation import ugettext_lazy as _ from django.core.validators import MinValueValidator, URLValidator from django.core.exceptions import ValidationError @@ -58,7 +66,7 @@ class BaseInvenTreeSetting(models.Model): single values (e.g. one-off settings values). """ - GLOBAL_SETTINGS = {} + SETTINGS = {} class Meta: abstract = True @@ -70,7 +78,7 @@ class BaseInvenTreeSetting(models.Model): self.key = str(self.key).upper() - self.clean() + self.clean(**kwargs) self.validate_unique() super().save() @@ -87,6 +95,7 @@ class BaseInvenTreeSetting(models.Model): results = cls.objects.all() + # Optionally filter by user if user is not None: results = results.filter(user=user) @@ -98,13 +107,13 @@ class BaseInvenTreeSetting(models.Model): settings[setting.key.upper()] = setting.value # Specify any "default" values which are not in the database - for key in cls.GLOBAL_SETTINGS.keys(): + for key in cls.SETTINGS.keys(): if key.upper() not in settings: settings[key.upper()] = cls.get_setting_default(key) if exclude_hidden: - hidden = cls.GLOBAL_SETTINGS[key].get('hidden', False) + hidden = cls.SETTINGS[key].get('hidden', False) if hidden: # Remove hidden items @@ -128,98 +137,92 @@ class BaseInvenTreeSetting(models.Model): return settings @classmethod - def get_setting_name(cls, key): + def get_setting_definition(cls, key, **kwargs): + """ + Return the 'definition' of a particular settings value, as a dict object. + + - The 'settings' dict can be passed as a kwarg + - If not passed, look for cls.SETTINGS + - Returns an empty dict if the key is not found + """ + + settings = kwargs.get('settings', cls.SETTINGS) + + key = str(key).strip().upper() + + if settings is not None and key in settings: + return settings[key] + else: + return {} + + @classmethod + def get_setting_name(cls, key, **kwargs): """ Return the name of a particular setting. If it does not exist, return an empty string. """ - key = str(key).strip().upper() - - if key in cls.GLOBAL_SETTINGS: - setting = cls.GLOBAL_SETTINGS[key] - return setting.get('name', '') - else: - return '' + setting = cls.get_setting_definition(key, **kwargs) + return setting.get('name', '') @classmethod - def get_setting_description(cls, key): + def get_setting_description(cls, key, **kwargs): """ Return the description for a particular setting. If it does not exist, return an empty string. """ - key = str(key).strip().upper() + setting = cls.get_setting_definition(key, **kwargs) - if key in cls.GLOBAL_SETTINGS: - setting = cls.GLOBAL_SETTINGS[key] - return setting.get('description', '') - else: - return '' + return setting.get('description', '') @classmethod - def get_setting_units(cls, key): + def get_setting_units(cls, key, **kwargs): """ Return the units for a particular setting. If it does not exist, return an empty string. """ - key = str(key).strip().upper() + setting = cls.get_setting_definition(key, **kwargs) - if key in cls.GLOBAL_SETTINGS: - setting = cls.GLOBAL_SETTINGS[key] - return setting.get('units', '') - else: - return '' + return setting.get('units', '') @classmethod - def get_setting_validator(cls, key): + def get_setting_validator(cls, key, **kwargs): """ Return the validator for a particular setting. If it does not exist, return None """ - key = str(key).strip().upper() + setting = cls.get_setting_definition(key, **kwargs) - if key in cls.GLOBAL_SETTINGS: - setting = cls.GLOBAL_SETTINGS[key] - return setting.get('validator', None) - else: - return None + return setting.get('validator', None) @classmethod - def get_setting_default(cls, key): + def get_setting_default(cls, key, **kwargs): """ Return the default value for a particular setting. If it does not exist, return an empty string """ - key = str(key).strip().upper() + setting = cls.get_setting_definition(key, **kwargs) - if key in cls.GLOBAL_SETTINGS: - setting = cls.GLOBAL_SETTINGS[key] - return setting.get('default', '') - else: - return '' + return setting.get('default', '') @classmethod - def get_setting_choices(cls, key): + def get_setting_choices(cls, key, **kwargs): """ Return the validator choices available for a particular setting. """ - key = str(key).strip().upper() + setting = cls.get_setting_definition(key, **kwargs) - if key in cls.GLOBAL_SETTINGS: - setting = cls.GLOBAL_SETTINGS[key] - choices = setting.get('choices', None) - else: - choices = None + choices = setting.get('choices', None) if callable(choices): # Evaluate the function (we expect it will return a list of tuples...) @@ -242,17 +245,40 @@ class BaseInvenTreeSetting(models.Model): key = str(key).strip().upper() + settings = cls.objects.all() + + # Filter by user + user = kwargs.get('user', None) + + if user is not None: + settings = settings.filter(user=user) + try: - setting = cls.objects.filter(**cls.get_filters(key, **kwargs)).first() + setting = settings.filter(**cls.get_filters(key, **kwargs)).first() except (ValueError, cls.DoesNotExist): setting = None except (IntegrityError, OperationalError): setting = None + plugin = kwargs.pop('plugin', None) + + if plugin: + from plugin import InvenTreePlugin + + if issubclass(plugin.__class__, InvenTreePlugin): + plugin = plugin.plugin_config() + + kwargs['plugin'] = plugin + # Setting does not exist! (Try to create it) if not setting: - setting = cls(key=key, value=cls.get_setting_default(key), **kwargs) + # Attempt to create a new settings object + setting = cls( + key=key, + value=cls.get_setting_default(key, **kwargs), + **kwargs + ) try: # Wrap this statement in "atomic", so it can be rolled back if it fails @@ -264,21 +290,6 @@ class BaseInvenTreeSetting(models.Model): return setting - @classmethod - def get_setting_pk(cls, key): - """ - Return the primary-key value for a given setting. - - If the setting does not exist, return None - """ - - setting = cls.get_setting_object(cls) - - if setting: - return setting.pk - else: - return None - @classmethod def get_setting(cls, key, backup_value=None, **kwargs): """ @@ -288,18 +299,19 @@ class BaseInvenTreeSetting(models.Model): # If no backup value is specified, atttempt to retrieve a "default" value if backup_value is None: - backup_value = cls.get_setting_default(key) + backup_value = cls.get_setting_default(key, **kwargs) setting = cls.get_setting_object(key, **kwargs) if setting: value = setting.value - # If the particular setting is defined as a boolean, cast the value to a boolean - if setting.is_bool(): + # Cast to boolean if necessary + if setting.is_bool(**kwargs): value = InvenTree.helpers.str2bool(value) - if setting.is_int(): + # Cast to integer if necessary + if setting.is_int(**kwargs): try: value = int(value) except (ValueError, TypeError): @@ -362,7 +374,7 @@ class BaseInvenTreeSetting(models.Model): def units(self): return self.__class__.get_setting_units(self.key) - def clean(self): + def clean(self, **kwargs): """ If a validator (or multiple validators) are defined for a particular setting key, run them against the 'value' field. @@ -370,25 +382,16 @@ class BaseInvenTreeSetting(models.Model): super().clean() - validator = self.__class__.get_setting_validator(self.key) + validator = self.__class__.get_setting_validator(self.key, **kwargs) - if self.is_bool(): - self.value = InvenTree.helpers.str2bool(self.value) - - if self.is_int(): - try: - self.value = int(self.value) - except (ValueError): - raise ValidationError(_('Must be an integer value')) + if validator is not None: + self.run_validator(validator) options = self.valid_options() if options and self.value not in options: raise ValidationError(_("Chosen value is not a valid option")) - if validator is not None: - self.run_validator(validator) - def run_validator(self, validator): """ Run a validator against the 'value' field for this InvenTreeSetting object. @@ -400,7 +403,7 @@ class BaseInvenTreeSetting(models.Model): value = self.value # Boolean validator - if self.is_bool(): + if validator is bool: # Value must "look like" a boolean value if InvenTree.helpers.is_bool(value): # Coerce into either "True" or "False" @@ -411,7 +414,7 @@ class BaseInvenTreeSetting(models.Model): }) # Integer validator - if self.is_int(): + if validator is int: try: # Coerce into an integer value @@ -464,12 +467,12 @@ class BaseInvenTreeSetting(models.Model): return [opt[0] for opt in choices] - def is_bool(self): + def is_bool(self, **kwargs): """ Check if this setting is required to be a boolean value """ - validator = self.__class__.get_setting_validator(self.key) + validator = self.__class__.get_setting_validator(self.key, **kwargs) return self.__class__.validator_is_bool(validator) @@ -482,15 +485,15 @@ class BaseInvenTreeSetting(models.Model): return InvenTree.helpers.str2bool(self.value) - def setting_type(self): + def setting_type(self, **kwargs): """ Return the field type identifier for this setting object """ - if self.is_bool(): + if self.is_bool(**kwargs): return 'boolean' - elif self.is_int(): + elif self.is_int(**kwargs): return 'integer' else: @@ -509,12 +512,12 @@ class BaseInvenTreeSetting(models.Model): return False - def is_int(self): + def is_int(self, **kwargs): """ Check if the setting is required to be an integer value: """ - validator = self.__class__.get_setting_validator(self.key) + validator = self.__class__.get_setting_validator(self.key, **kwargs) return self.__class__.validator_is_int(validator) @@ -546,21 +549,20 @@ class BaseInvenTreeSetting(models.Model): return value @classmethod - def is_protected(cls, key): + def is_protected(cls, key, **kwargs): """ Check if the setting value is protected """ - key = str(key).strip().upper() + setting = cls.get_setting_definition(key, **kwargs) - if key in cls.GLOBAL_SETTINGS: - return cls.GLOBAL_SETTINGS[key].get('protected', False) - else: - return False + return setting.get('protected', False) def settings_group_options(): - """build up group tuple for settings based on gour choices""" + """ + Build up group tuple for settings based on your choices + """ return [('', _('No group')), *[(str(a.id), str(a)) for a in Group.objects.all()]] @@ -582,7 +584,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): super().save() if self.requires_restart(): - InvenTreeSetting.set_setting('SERVER_REQUIRES_RESTART', True, None) + InvenTreeSetting.set_setting('SERVER_RESTART_REQUIRED', True, None) """ Dict of all global settings values: @@ -600,7 +602,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): The keys must be upper-case """ - GLOBAL_SETTINGS = { + SETTINGS = { 'SERVER_RESTART_REQUIRED': { 'name': _('Restart required'), @@ -883,13 +885,6 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'validator': bool, }, - 'STOCK_GROUP_BY_PART': { - 'name': _('Group by Part'), - 'description': _('Group stock items by part reference in table views'), - 'default': True, - 'validator': bool, - }, - 'BUILDORDER_REFERENCE_PREFIX': { 'name': _('Build Order Reference Prefix'), 'description': _('Prefix value for build order reference'), @@ -968,6 +963,8 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'default': False, 'validator': bool, }, + + # Settings for plugin mixin features 'ENABLE_PLUGINS_URL': { 'name': _('Enable URL integration'), 'description': _('Enable plugins to add URL routes'), @@ -982,16 +979,23 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'validator': bool, 'requires_restart': True, }, - 'ENABLE_PLUGINS_GLOBALSETTING': { - 'name': _('Enable global setting integration'), - 'description': _('Enable plugins to integrate into inventree global settings'), + 'ENABLE_PLUGINS_APP': { + 'name': _('Enable app integration'), + 'description': _('Enable plugins to add apps'), 'default': False, 'validator': bool, 'requires_restart': True, }, - 'ENABLE_PLUGINS_APP': { - 'name': _('Enable app integration'), - 'description': _('Enable plugins to add apps'), + 'ENABLE_PLUGINS_SCHEDULE': { + 'name': _('Enable schedule integration'), + 'description': _('Enable plugins to run scheduled tasks'), + 'default': False, + 'validator': bool, + 'requires_restart': True, + }, + 'ENABLE_PLUGINS_EVENTS': { + 'name': _('Enable event integration'), + 'description': _('Enable plugins to respond to internal events'), 'default': False, 'validator': bool, 'requires_restart': True, @@ -1022,7 +1026,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): Return True if this setting requires a server restart after changing """ - options = InvenTreeSetting.GLOBAL_SETTINGS.get(self.key, None) + options = InvenTreeSetting.SETTINGS.get(self.key, None) if options: return options.get('requires_restart', False) @@ -1035,7 +1039,7 @@ class InvenTreeUserSetting(BaseInvenTreeSetting): An InvenTreeSetting object with a usercontext """ - GLOBAL_SETTINGS = { + SETTINGS = { 'HOMEPAGE_PART_STARRED': { 'name': _('Show subscribed parts'), 'description': _('Show subscribed parts on the homepage'), @@ -1400,6 +1404,184 @@ class ColorTheme(models.Model): return False +class VerificationMethod: + NONE = 0 + TOKEN = 1 + HMAC = 2 + + +class WebhookEndpoint(models.Model): + """ Defines a Webhook entdpoint + + Attributes: + endpoint_id: Path to the webhook, + name: Name of the webhook, + active: Is this webhook active?, + user: User associated with webhook, + token: Token for sending a webhook, + secret: Shared secret for HMAC verification, + """ + + # Token + TOKEN_NAME = "Token" + VERIFICATION_METHOD = VerificationMethod.NONE + + MESSAGE_OK = "Message was received." + MESSAGE_TOKEN_ERROR = "Incorrect token in header." + + endpoint_id = models.CharField( + max_length=255, + verbose_name=_('Endpoint'), + help_text=_('Endpoint at which this webhook is received'), + default=uuid.uuid4, + editable=False, + ) + + name = models.CharField( + max_length=255, + blank=True, null=True, + verbose_name=_('Name'), + help_text=_('Name for this webhook') + ) + + active = models.BooleanField( + default=True, + verbose_name=_('Active'), + help_text=_('Is this webhook active') + ) + + user = models.ForeignKey( + User, + on_delete=models.SET_NULL, + blank=True, null=True, + verbose_name=_('User'), + help_text=_('User'), + ) + + token = models.CharField( + max_length=255, + blank=True, null=True, + verbose_name=_('Token'), + help_text=_('Token for access'), + default=uuid.uuid4, + ) + + secret = models.CharField( + max_length=255, + blank=True, null=True, + verbose_name=_('Secret'), + help_text=_('Shared secret for HMAC'), + ) + + # To be overridden + + def init(self, request, *args, **kwargs): + self.verify = self.VERIFICATION_METHOD + + def process_webhook(self): + if self.token: + self.token = self.token + self.verify = VerificationMethod.TOKEN + # TODO make a object-setting + if self.secret: + self.secret = self.secret + self.verify = VerificationMethod.HMAC + # TODO make a object-setting + return True + + def validate_token(self, payload, headers, request): + token = headers.get(self.TOKEN_NAME, "") + + # no token + if self.verify == VerificationMethod.NONE: + pass + + # static token + elif self.verify == VerificationMethod.TOKEN: + if not compare_digest(token, self.token): + raise PermissionDenied(self.MESSAGE_TOKEN_ERROR) + + # hmac token + elif self.verify == VerificationMethod.HMAC: + digest = hmac.new(self.secret.encode('utf-8'), request.body, hashlib.sha256).digest() + computed_hmac = base64.b64encode(digest) + if not hmac.compare_digest(computed_hmac, token.encode('utf-8')): + raise PermissionDenied(self.MESSAGE_TOKEN_ERROR) + + return True + + def save_data(self, payload, headers=None, request=None): + return WebhookMessage.objects.create( + host=request.get_host(), + header=json.dumps({key: val for key, val in headers.items()}), + body=payload, + endpoint=self, + ) + + def process_payload(self, message, payload=None, headers=None): + return True + + def get_return(self, payload, headers=None, request=None): + return self.MESSAGE_OK + + +class WebhookMessage(models.Model): + """ Defines a webhook message + + Attributes: + message_id: Unique identifier for this message, + host: Host from which this message was received, + header: Header of this message, + body: Body of this message, + endpoint: Endpoint on which this message was received, + worked_on: Was the work on this message finished? + """ + + message_id = models.UUIDField( + verbose_name=_('Message ID'), + help_text=_('Unique identifier for this message'), + primary_key=True, + default=uuid.uuid4, + editable=False, + ) + + host = models.CharField( + max_length=255, + verbose_name=_('Host'), + help_text=_('Host from which this message was received'), + editable=False, + ) + + header = models.CharField( + max_length=255, + blank=True, null=True, + verbose_name=_('Header'), + help_text=_('Header of this message'), + editable=False, + ) + + body = models.JSONField( + blank=True, null=True, + verbose_name=_('Body'), + help_text=_('Body of this message'), + editable=False, + ) + + endpoint = models.ForeignKey( + WebhookEndpoint, + on_delete=models.SET_NULL, + blank=True, null=True, + verbose_name=_('Endpoint'), + help_text=_('Endpoint on which this message was received'), + ) + + worked_on = models.BooleanField( + default=False, + verbose_name=_('Worked on'), + help_text=_('Was the work on this message finished?'), + ) + + class NotificationEntry(models.Model): """ A NotificationEntry records the last time a particular notifaction was sent out. diff --git a/InvenTree/common/tests.py b/InvenTree/common/tests.py index 48838415b5..a02793fb12 100644 --- a/InvenTree/common/tests.py +++ b/InvenTree/common/tests.py @@ -1,13 +1,14 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals - +from http import HTTPStatus +import json from datetime import timedelta -from django.test import TestCase +from django.test import TestCase, Client from django.contrib.auth import get_user_model -from .models import InvenTreeSetting -from .models import NotificationEntry +from .models import InvenTreeSetting, WebhookEndpoint, WebhookMessage, NotificationEntry +from .api import WebhookView class SettingsTest(TestCase): @@ -49,9 +50,9 @@ class SettingsTest(TestCase): - Ensure that every global setting has a description. """ - for key in InvenTreeSetting.GLOBAL_SETTINGS.keys(): + for key in InvenTreeSetting.SETTINGS.keys(): - setting = InvenTreeSetting.GLOBAL_SETTINGS[key] + setting = InvenTreeSetting.SETTINGS[key] name = setting.get('name', None) @@ -64,14 +65,14 @@ class SettingsTest(TestCase): raise ValueError(f'Missing GLOBAL_SETTING description for {key}') if not key == key.upper(): - raise ValueError(f"GLOBAL_SETTINGS key '{key}' is not uppercase") + raise ValueError(f"SETTINGS key '{key}' is not uppercase") def test_defaults(self): """ Populate the settings with default values """ - for key in InvenTreeSetting.GLOBAL_SETTINGS.keys(): + for key in InvenTreeSetting.SETTINGS.keys(): value = InvenTreeSetting.get_setting_default(key) @@ -90,7 +91,119 @@ class SettingsTest(TestCase): raise ValueError(f'Non-boolean default value specified for {key}') -class NotificationEntryTest(TestCase): +class WebhookMessageTests(TestCase): + def setUp(self): + self.endpoint_def = WebhookEndpoint.objects.create() + self.url = f'/api/webhook/{self.endpoint_def.endpoint_id}/' + self.client = Client(enforce_csrf_checks=True) + + def test_bad_method(self): + response = self.client.get(self.url) + + assert response.status_code == HTTPStatus.METHOD_NOT_ALLOWED + + def test_missing_token(self): + response = self.client.post( + self.url, + content_type='application/json', + ) + + assert response.status_code == HTTPStatus.FORBIDDEN + assert ( + json.loads(response.content)['detail'] == WebhookView.model_class.MESSAGE_TOKEN_ERROR + ) + + def test_bad_token(self): + response = self.client.post( + self.url, + content_type='application/json', + **{'HTTP_TOKEN': '1234567fghj'}, + ) + + assert response.status_code == HTTPStatus.FORBIDDEN + assert (json.loads(response.content)['detail'] == WebhookView.model_class.MESSAGE_TOKEN_ERROR) + + def test_bad_url(self): + response = self.client.post( + '/api/webhook/1234/', + content_type='application/json', + ) + + assert response.status_code == HTTPStatus.NOT_FOUND + + def test_bad_json(self): + response = self.client.post( + self.url, + data="{'this': 123}", + content_type='application/json', + **{'HTTP_TOKEN': str(self.endpoint_def.token)}, + ) + + assert response.status_code == HTTPStatus.NOT_ACCEPTABLE + assert ( + json.loads(response.content)['detail'] == 'Expecting property name enclosed in double quotes' + ) + + def test_success_no_token_check(self): + # delete token + self.endpoint_def.token = '' + self.endpoint_def.save() + + # check + response = self.client.post( + self.url, + content_type='application/json', + ) + + assert response.status_code == HTTPStatus.OK + assert str(response.content, 'utf-8') == WebhookView.model_class.MESSAGE_OK + + def test_bad_hmac(self): + # delete token + self.endpoint_def.token = '' + self.endpoint_def.secret = '123abc' + self.endpoint_def.save() + + # check + response = self.client.post( + self.url, + content_type='application/json', + ) + + assert response.status_code == HTTPStatus.FORBIDDEN + assert (json.loads(response.content)['detail'] == WebhookView.model_class.MESSAGE_TOKEN_ERROR) + + def test_success_hmac(self): + # delete token + self.endpoint_def.token = '' + self.endpoint_def.secret = '123abc' + self.endpoint_def.save() + + # check + response = self.client.post( + self.url, + content_type='application/json', + **{'HTTP_TOKEN': str('68MXtc/OiXdA5e2Nq9hATEVrZFpLb3Zb0oau7n8s31I=')}, + ) + + assert response.status_code == HTTPStatus.OK + assert str(response.content, 'utf-8') == WebhookView.model_class.MESSAGE_OK + + def test_success(self): + response = self.client.post( + self.url, + data={"this": "is a message"}, + content_type='application/json', + **{'HTTP_TOKEN': str(self.endpoint_def.token)}, + ) + + assert response.status_code == HTTPStatus.OK + assert str(response.content, 'utf-8') == WebhookView.model_class.MESSAGE_OK + message = WebhookMessage.objects.get() + assert message.body == {"this": "is a message"} + + +class NotificationTest(TestCase): def test_check_notification_entries(self): diff --git a/InvenTree/config_template.yaml b/InvenTree/config_template.yaml index 3472a37d8e..b14c1224ce 100644 --- a/InvenTree/config_template.yaml +++ b/InvenTree/config_template.yaml @@ -14,18 +14,15 @@ database: # --- Available options: --- # ENGINE: Database engine. Selection from: - # - sqlite3 # - mysql # - postgresql + # - sqlite3 # NAME: Database name # USER: Database username (if required) # PASSWORD: Database password (if required) # HOST: Database host address (if required) # PORT: Database host port (if required) - # --- Example Configuration - sqlite3 --- - # ENGINE: sqlite3 - # NAME: '/home/inventree/database.sqlite3' # --- Example Configuration - MySQL --- #ENGINE: mysql @@ -42,6 +39,10 @@ database: #PASSWORD: inventree_password #HOST: 'localhost' #PORT: '5432' + + # --- Example Configuration - sqlite3 --- + # ENGINE: sqlite3 + # NAME: '/home/inventree/database.sqlite3' # Select default system language (default is 'en-us') language: en-us @@ -101,6 +102,10 @@ debug: True # and only if InvenTree is accessed from a local IP (127.0.0.1) debug_toolbar: False +# Set this variable to True to enable InvenTree Plugins +# Alternatively, use the environment variable INVENTREE_PLUGINS_ENABLED +plugins_enabled: False + # Configure the system logging level # Use environment variable INVENTREE_LOG_LEVEL # Options: DEBUG / INFO / WARNING / ERROR / CRITICAL diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po index 6e42d13b5d..13c23e65e3 100644 --- a/InvenTree/locale/de/LC_MESSAGES/django.po +++ b/InvenTree/locale/de/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 06:28\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:58\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -34,8 +34,8 @@ msgstr "Keine passende Aktion gefunden" msgid "Enter date" msgstr "Datum eingeben" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "Bestätigen" @@ -103,12 +103,12 @@ msgstr "Ungültige Gruppe: {g}" #: InvenTree/helpers.py:510 #, python-brace-format msgid "Invalid group {group}" -msgstr "" +msgstr "Ungültige Gruppe {group}" #: InvenTree/helpers.py:516 #, python-brace-format msgid "Invalid/no group {group}" -msgstr "" +msgstr "Ungültige/Keine Gruppe {group}" #: InvenTree/helpers.py:522 msgid "No serial numbers found" @@ -157,8 +157,8 @@ msgstr "Kommentar" msgid "File comment" msgstr "Datei-Kommentar" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "Ungültige Auswahl" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "Name" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "Muss eine gültige Nummer sein" msgid "Filename" msgstr "Dateiname" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "Deutsch" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "Griechisch" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "Englisch" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "Spanisch" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "Spanisch (Mexikanisch)" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "Französisch" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "Hebräisch" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "Italienisch" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "Japanisch" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "Koreanisch" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "Niederländisch" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "Norwegisch" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "Polnisch" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "Portugiesisch" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "Russisch" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "Schwedisch" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "Thailändisch" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "Türkisch" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "Vietnamesisch" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "Chinesisch" @@ -457,7 +457,7 @@ msgstr "Unterobjekt geteilt" #: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064 msgid "Merged stock items" -msgstr "" +msgstr "Lagerartikel zusammengeführt" #: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213 msgid "Sent to customer" @@ -565,27 +565,27 @@ msgstr "Keine passende Lagerartikel gefunden" #: barcodes/api.py:191 msgid "Barcode already matches Stock Item" -msgstr "" +msgstr "Barcode entspricht bereits einem Lagerartikel" #: barcodes/api.py:195 msgid "Barcode already matches Stock Location" -msgstr "" +msgstr "Barcode entspricht bereits Lagerort" #: barcodes/api.py:199 msgid "Barcode already matches Part" -msgstr "" +msgstr "Barcode entspricht bereits Teil" #: barcodes/api.py:205 barcodes/api.py:217 msgid "Barcode hash already matches Stock Item" -msgstr "" +msgstr "Barcode-Hash entspricht bereits einem Lagerartikel" #: barcodes/api.py:223 msgid "Barcode associated with Stock Item" -msgstr "" +msgstr "Barcode Lagerartikel zugeordnet" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "Anlage von Endprodukt(en) bestätigen" msgid "Confirm deletion of build output" msgstr "Löschen des Endprodukt bestätigen" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "Bauauftrag als vollständig markieren" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "Abbruch bestätigen" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "Bauabbruch bestätigen" @@ -660,7 +656,7 @@ msgstr "Ungültige Wahl für übergeordneten Bauauftrag" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "Bauauftrag" @@ -683,7 +679,7 @@ msgstr "Bauauftragsreferenz" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "Referenz" @@ -718,9 +714,9 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "Auftrag Referenz" msgid "SalesOrder to which this build is allocated" msgstr "Bestellung, die diesem Bauauftrag zugewiesen ist" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "Quell-Lagerort" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "Zieldatum für Bauauftrag-Fertigstellung." #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "Fertigstellungsdatum" @@ -815,7 +811,7 @@ msgstr "Fertigstellungsdatum" msgid "completed by" msgstr "Fertiggestellt von" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "Aufgegeben von" @@ -828,7 +824,7 @@ msgstr "Nutzer der diesen Bauauftrag erstellt hat" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "Verantwortlicher Benutzer" @@ -840,7 +836,7 @@ msgstr "Nutzer der für diesen Bauauftrag zuständig ist" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "Externer Link" @@ -904,8 +900,8 @@ msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein" msgid "Selected stock item not found in BOM" msgstr "Ausgewähltes Bestands-Objekt nicht in Stückliste für Teil '{p}' gefunden" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "Bauauftrag" @@ -914,13 +910,13 @@ msgstr "Bauauftrag" msgid "Build to allocate parts" msgstr "Bauauftrag starten um Teile zuzuweisen" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "Installiere in" msgid "Destination stock item" msgstr "Ziel-Lagerartikel" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "Endprodukt" @@ -967,10 +963,10 @@ msgstr "Dieses Endprodukt ist nicht vollständig zugewiesen" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "Lagerort für fertige Endprodukte" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "Status" msgid "A list of build outputs must be provided" msgstr "Eine Liste von Endprodukten muss angegeben werden" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "Benötigter Bestand wurde nicht vollständig zugewiesen" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "Benötigte Teil-Anzahl wurde noch nicht fertiggestellt" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "Stücklisten-Position" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "Endprodukt" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "Endprodukt muss auf den gleichen Bauauftrag verweisen" -#: build/serializers.py:325 +#: build/serializers.py:379 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:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "Teil muss auf Lager sein" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "Anzahl muss größer Null sein" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Verfügbare Menge ({q}) überschritten" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "Für Zuweisung von verfolgten Teilen muss ein Endprodukt angegeben sein" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "Endprodukt kann bei Zuweisung nicht-verfolgter Teile nicht angegeben werden" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "Zuweisungen müssen angegeben werden" @@ -1073,7 +1097,6 @@ msgstr "Bauauftrag löschen" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "Bauauftrag fertigstellen" @@ -1112,7 +1135,7 @@ msgstr "Bestand wurde Bauauftrag noch nicht vollständig zugewiesen" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "Zieldatum" @@ -1135,7 +1158,7 @@ msgstr "Überfällig" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "Fertig" @@ -1146,7 +1169,7 @@ msgstr "Fertig" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "Auftrag" @@ -1189,26 +1212,6 @@ msgstr "Seriennummeren für mehrere einzelne Endprodukte angeben" msgid "Are you sure you wish to cancel this build?" msgstr "Sind Sie sicher, dass sie diesen Bauauftrag abbrechen möchten?" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "Bauauftrag ist vollständig" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "Bauauftrag ist unvollständig" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "unfertige Endprodukte vorhanden" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "Benötigte Teil-Anzahl wurde noch nicht fertiggestellt" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "Benötigter Bestand wurde nicht vollständig zugewiesen" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "Bau-Status" @@ -1230,12 +1233,12 @@ msgstr "Ziel-Lager" msgid "Destination location not specified" msgstr "Ziel-Lagerort nicht angegeben" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "Zugewiesene Teile" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "Losnummer" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "Erstellt" @@ -1265,7 +1268,7 @@ msgstr "Unter-Bauaufträge" msgid "Allocate Stock to Build" msgstr "Bestand Bauauftrag zuweisen" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "Bestandszuordnung aufheben" @@ -1446,19 +1449,7 @@ msgstr "Endprodukt muss angegeben sein" msgid "Build output deleted" msgstr "Endprodukt gelöscht" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "Bauauftrag fertigstellen" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "Bauauftrag kann nicht abgeschlossen werden, es gibt noch unvollständige Endprodukte" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "Bauauftrag fertiggestellt" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "Bauauftrag löschen" @@ -1499,728 +1490,724 @@ msgstr "{name.title()} Datei" msgid "Select {name} file to upload" msgstr "{name} Datei zum Hochladen auswählen" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "Einstellungs-Wert" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "Nur Ganzzahl eingeben" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "Wert ist keine gültige Option" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "Wahrheitswert erforderlich" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "Nur Ganzzahl eingeben" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "Schlüsseltext muss eindeutig sein" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "Keine Gruppe" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "Neustart erforderlich" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "Eine Einstellung wurde geändert, die einen Neustart des Servers erfordert" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "InvenTree Instanzname" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "Kurze Beschreibung der Instanz" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "Name der Instanz verwenden" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "Den Namen der Instanz in der Titelleiste verwenden" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Firmenname" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "interner Firmenname" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "Basis-URL" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "Basis-URL für dieses Instanz" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "Standardwährung" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "Standardwährung" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "Von URL herunterladen" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "Herunterladen von externen Bildern und Dateien von URLs erlaubt" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Bacode-Feature verwenden" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "Barcode-Scanner Unterstützung" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "IPN Regex" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "RegEx Muster für die Zuordnung von Teil-IPN" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "Mehrere Artikel mit gleicher IPN erlaubt" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "Mehrere Artikel mit gleicher IPN erlaubt" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "Ändern von IPN erlaubt" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "Ändern der IPN während des Bearbeiten eines Teils erlaubt" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "Teil-Stückliste kopieren" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "Stückliste von Teil kopieren wenn das Teil dupliziert wird " -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "Teil-Parameter kopieren" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "Parameter-Daten für dieses Teil kopieren wenn das Teil dupliziert wird" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "Teil-Testdaten kopieren" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "Test-Daten für dieses Teil kopieren wenn das Teil dupliziert wird" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "Kategorie-Parametervorlage kopieren" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "Kategorie-Parameter Vorlagen kopieren wenn ein Teil angelegt wird" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "Vorlage" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "Teile sind standardmäßig Vorlagen" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "Baugruppe" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "Teile können standardmäßig aus anderen Teilen angefertigt werden" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "Komponente" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "Teile können standardmäßig in Baugruppen benutzt werden" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "Kaufbar" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "Artikel sind grundsätzlich kaufbar" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "Verkäuflich" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "Artikel sind grundsätzlich verkaufbar" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "Nachverfolgbar" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "Artikel sind grundsätzlich verfolgbar" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Virtuell" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "Teile sind grundsätzlich virtuell" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "Import in Ansichten anzeigen" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "Importassistent in einigen Teil-Ansichten anzeigen" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "Preis in Formularen anzeigen" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "Teilpreis in einigen Formularen anzeigen" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "Preis in Stückliste anzeigen" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "Preisinformationen in Stücklisten Tabellen einbeziehen" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "Verwandte Teile anzeigen" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "Verwandte Teile eines Teils anzeigen" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "Ausgangsbestand erstellen" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "Ausgangsbestand beim Erstellen von Teilen erstellen" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "Interne Preise" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "Interne Preise für Teile aktivieren" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "Interner Preis als Stückliste-Preis" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "Interner Preis (falls vorhanden) in Stücklisten-Preisberechnungen verwenden" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "Anzeigeformat für Teilenamen" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "Format für den Namen eines Teiles" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "Berichte aktivieren" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "Berichterstellung aktivieren" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "Entwickler-Modus" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "Berichte im Entwickler-Modus generieren (als HTML)" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "Seitengröße" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "Standardseitenformat für PDF-Bericht" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "Test-Berichte" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "Erstellung von Test-Berichten aktivieren" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "Bestands-Ablauf" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "Ablaufen von Bestand ermöglichen" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "Abgelaufenen Bestand verkaufen" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "Verkauf von abgelaufenem Bestand erlaubt" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "Bestands-Stehzeit" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "Anzahl an Tagen, an denen Bestand als abgestanden markiert wird, bevor sie ablaufen" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "Tage" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "Abgelaufenen Bestand verbauen" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "Verbauen von abgelaufenen Bestand erlaubt" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "Bestands-Eigentümerkontrolle" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "Eigentümerkontrolle für Lagerorte und Teile aktivieren" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "Gruppieren nach Teil" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "Bestand in Tabellen anhand von Teil-Referenz gruppieren" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "Bauauftrag-Referenz Präfix" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "Präfix für Bauauftrag-Referenz" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "Bauauftrag-Referenz RegEx" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "RegEx Muster für die Zuordnung von Bauauftrag-Referenzen" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "Auftrags-Referenz Präfix" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "Präfix für Auftrags-Referenz" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "Bestellungs-Referenz Präfix" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "Präfix für Bestellungs-Referenz" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "Passwort vergessen aktivieren" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "Passwort-vergessen-Funktion auf den Anmeldeseiten aktivieren" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "Anmeldung erlauben" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "Selbstregistrierung für Benutzer auf den Anmeldeseiten aktivieren" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "SSO aktivieren" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "SSO auf den Anmeldeseiten aktivieren" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "Email-Adresse erforderlich" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "Benutzer müssen bei der Registrierung eine E-Mail angeben" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "SSO-Benutzer automatisch ausfüllen" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "Benutzer-Details automatisch aus SSO-Konto ausfüllen" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "E-Mail zweimal" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "Bei der Registrierung den Benutzer zweimal nach der E-Mail-Adresse fragen" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "Passwort zweimal" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "Bei der Registrierung den Benutzer zweimal nach dem Passwort fragen" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "Gruppe bei Registrierung" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "Gruppe der neue Benutzer bei der Registrierung zugewiesen werden" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" -msgstr "" +msgstr "MFA erzwingen" + +#: common/models.py:956 +msgid "Users must use multifactor security." +msgstr "Benutzer müssen Multifaktor-Authentifizierung verwenden." + +#: common/models.py:961 +msgid "Enable URL integration" +msgstr "URL-Integration aktivieren" #: common/models.py:962 -msgid "Users must use multifactor security." -msgstr "" - -#: common/models.py:967 -msgid "Enable URL integration" -msgstr "" - -#: common/models.py:968 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "Abonnierte Teile anzeigen" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "Zeige abonnierte Teile auf der Startseite" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "Abonnierte Kategorien anzeigen" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "Zeige abonnierte Teilkategorien auf der Startseite" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "Neueste Teile anzeigen" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "Zeige neueste Teile auf der Startseite" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "Aktuelle Teile-Stände" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "Anzahl der neusten Teile auf der Startseite" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "Nicht validierte Stücklisten anzeigen" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "Zeige Stücklisten, die noch nicht validiert sind, auf der Startseite" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "Neueste Bestandänderungen anzeigen" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "Zeige zuletzt geänderte Lagerbestände auf der Startseite" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "aktueller Bestand" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "Anzahl des geänderten Bestands auf der Startseite" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "Niedrigen Bestand anzeigen" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "Zeige geringen Bestand auf der Startseite" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "Lerren Bestand anzeigen" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "Zeige aufgebrauchte Lagerartikel auf der Startseite" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "Benötigten Bestand anzeigen" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "Zeige Bestand für Bauaufträge auf der Startseite" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "Abgelaufenen Bestand anzeigen" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "Zeige abgelaufene Lagerbestände auf der Startseite" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "Alten Bestand anzeigen" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "Zeige überfällige Lagerartikel auf der Startseite" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "Ausstehende Bauaufträge anzeigen" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "Zeige ausstehende Bauaufträge auf der Startseite" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "Zeige überfällige Bauaufträge" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "Zeige überfällige Bauaufträge auf der Startseite" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "Ausstehende POs anzeigen" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "Zeige ausstehende POs auf der Startseite" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "Überfällige POs anzeigen" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "Zeige überfällige POs auf der Startseite" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "Ausstehende SOs anzeigen" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "Zeige ausstehende SOs auf der Startseite" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "Überfällige SOs anzeigen" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "Zeige überfällige SOs auf der Startseite" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "Label inline anzeigen" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "PDF-Labels im Browser anzeigen, anstatt als Datei herunterzuladen" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "Berichte inline anzeigen" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "PDF-Berichte im Browser anzeigen, anstatt als Datei herunterzuladen" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "Anzahl Suchergebnisse" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "Anzahl der Ergebnisse, die in der Vorschau angezeigt werden sollen" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "Suche Bestand anzeigen" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "Bestand in Suchvorschau anzeigen" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "Inaktive Teile ausblenden" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "Inaktive Teile in der Suchvorschau ausblenden" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "zeige Bestand in Eingabemasken" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "Esc-Taste schließt Formulare" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "Benutze die Esc-Taste, um Formulare zu schließen" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "Fixierter Navigationsleiste" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "Position der InvenTree Navigationsleiste am oberen Bildschirmrand fixieren" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "Preisstaffelungs Anzahl" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "Preis" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "Stückpreis für die angegebene Anzahl" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "Standard-Währung für diese Firma" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "Basisteil" @@ -2377,7 +2364,7 @@ msgstr "Teil auswählen" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "Teilbeschreibung des Herstellers" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "Herstellerteil" @@ -2433,7 +2420,7 @@ msgstr "Parameterwert" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "Einheiten" @@ -2450,7 +2437,7 @@ msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren" #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "Mindestpreis" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "Verpackungen" @@ -2570,7 +2557,7 @@ msgstr "Bild von URL herunterladen" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "Neuer Auftrag" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "Zugeordneter Bestand" @@ -2763,7 +2750,7 @@ msgstr "Zuliefererteil entfernen" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "Löschen" @@ -2816,7 +2803,7 @@ msgstr "Zugewiesene Lagerartikel" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "Zuliefererteil" @@ -3153,19 +3140,19 @@ msgstr "Versand von" #: order/models.py:635 msgid "Order cannot be completed as no parts have been assigned" -msgstr "" +msgstr "Auftrag kann nicht abgeschlossen werden, da keine Teile zugewiesen wurden" #: order/models.py:639 msgid "Only a pending order can be marked as complete" -msgstr "" +msgstr "Nur ein ausstehender Auftrag kann als abgeschlossen markiert werden" #: order/models.py:642 msgid "Order cannot be completed as there are incomplete shipments" -msgstr "" +msgstr "Auftrag kann nicht abgeschlossen werden, da unvollständige Sendungen vorhanden sind" #: order/models.py:645 msgid "Order cannot be completed as there are incomplete line items" -msgstr "" +msgstr "Auftrag kann nicht abgeschlossen werden, da es unvollständige Positionen gibt" #: order/models.py:797 msgid "Item quantity" @@ -3187,7 +3174,7 @@ msgstr "Bestellung" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "Empfangene Objekt-Anzahl" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "Preis" @@ -3233,43 +3220,43 @@ msgstr "Stückverkaufspreis" #: order/models.py:942 msgid "Shipped quantity" -msgstr "" +msgstr "Versendete Menge" #: order/models.py:1029 msgid "Date of shipment" -msgstr "" +msgstr "Versanddatum" #: order/models.py:1036 msgid "Checked By" -msgstr "" +msgstr "Kontrolliert von" #: order/models.py:1037 msgid "User who checked this shipment" -msgstr "" +msgstr "Benutzer, der diese Sendung kontrolliert hat" #: order/models.py:1045 msgid "Shipment number" -msgstr "" +msgstr "Sendungsnummer" #: order/models.py:1052 msgid "Shipment notes" -msgstr "" +msgstr "Versandhinweise" #: order/models.py:1059 msgid "Tracking Number" -msgstr "" +msgstr "Sendungsverfolgungsnummer" #: order/models.py:1060 msgid "Shipment tracking information" -msgstr "" +msgstr "Informationen zur Sendungsverfolgung" #: order/models.py:1070 msgid "Shipment has already been sent" -msgstr "" +msgstr "Sendung wurde bereits versandt" #: order/models.py:1073 msgid "Shipment has no allocated stock items" -msgstr "" +msgstr "Sendung hat keine zugewiesene Lagerartikel" #: order/models.py:1149 order/models.py:1151 msgid "Stock item has not been assigned" @@ -3297,11 +3284,11 @@ msgstr "Anzahl für serialisierte Lagerartikel muss 1 sein" #: order/models.py:1173 msgid "Sales order does not match shipment" -msgstr "" +msgstr "Auftrag gehört nicht zu Sendung" #: order/models.py:1174 msgid "Shipment does not match sales order" -msgstr "" +msgstr "Sendung gehört nicht zu Auftrag" #: order/models.py:1182 msgid "Line" @@ -3310,11 +3297,11 @@ msgstr "Position" #: order/models.py:1190 order/serializers.py:825 order/serializers.py:953 #: templates/js/translated/model_renderers.js:251 msgid "Shipment" -msgstr "" +msgstr "Sendung" #: order/models.py:1191 msgid "Sales order shipment reference" -msgstr "" +msgstr "Sendungsnummer-Referenz" #: order/models.py:1203 msgid "Item" @@ -3374,35 +3361,35 @@ msgstr "Verkaufspreis-Währung" #: order/serializers.py:649 msgid "No shipment details provided" -msgstr "" +msgstr "Keine Sendungsdetails angegeben" #: order/serializers.py:699 order/serializers.py:802 msgid "Line item is not associated with this order" -msgstr "" +msgstr "Position ist nicht diesem Auftrag zugeordnet" #: order/serializers.py:721 msgid "Quantity must be positive" -msgstr "" +msgstr "Anzahl muss positiv sein" #: order/serializers.py:815 msgid "Enter serial numbers to allocate" -msgstr "" +msgstr "Seriennummern zum Zuweisen eingeben" #: order/serializers.py:839 order/serializers.py:964 msgid "Shipment has already been shipped" -msgstr "" +msgstr "Sendung wurde bereits versandt" #: order/serializers.py:842 order/serializers.py:967 msgid "Shipment is not associated with this order" -msgstr "" +msgstr "Sendung ist nicht diesem Auftrag zugeordnet" #: order/serializers.py:894 msgid "No match found for the following serial numbers" -msgstr "" +msgstr "Folgende Serienummern konnten nicht gefunden werden" #: order/serializers.py:904 msgid "The following serial numbers are already allocated" -msgstr "" +msgstr "Folgende Seriennummern sind bereits zugewiesen" #: order/templates/order/delete_attachment.html:5 #: stock/templates/stock/attachment_delete.html:5 @@ -3460,13 +3447,13 @@ msgstr "Bestellstatus" #: order/templates/order/order_base.html:124 #: order/templates/order/sales_order_base.html:128 msgid "Completed Line Items" -msgstr "" +msgstr "Abgeschlossene Positionen" #: order/templates/order/order_base.html:130 #: order/templates/order/sales_order_base.html:134 #: order/templates/order/sales_order_base.html:144 msgid "Incomplete" -msgstr "" +msgstr "Unvollständig" #: order/templates/order/order_base.html:149 #: report/templates/report/inventree_build_order_base.html:122 @@ -3549,7 +3536,7 @@ msgstr "Auswahl duplizieren" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3702,7 +3689,7 @@ msgstr "Paketliste drucken" #: order/templates/order/sales_order_base.html:66 #: order/templates/order/sales_order_base.html:229 msgid "Complete Sales Order" -msgstr "" +msgstr "Auftrag abschließen" #: order/templates/order/sales_order_base.html:102 msgid "This Sales Order has not been fully allocated" @@ -3717,7 +3704,7 @@ msgstr "Kundenreferenz" #: order/templates/order/sales_order_detail.html:78 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" -msgstr "" +msgstr "Abgeschlossene Sendungen" #: order/templates/order/sales_order_base.html:215 msgid "Edit Sales Order" @@ -3739,16 +3726,16 @@ msgstr "Auftrags-Positionen" #: order/templates/order/sales_order_detail.html:44 #: order/templates/order/so_sidebar.html:8 msgid "Pending Shipments" -msgstr "" +msgstr "Ausstehende Sendungen" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "Aktionen" #: order/templates/order/sales_order_detail.html:57 msgid "New Shipment" -msgstr "" +msgstr "Neue Sendung" #: order/views.py:99 msgid "Cancel Order" @@ -3965,7 +3952,7 @@ msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "Kategorie" @@ -4045,7 +4032,7 @@ msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?" msgid "Can this part be sold to customers?" msgstr "Kann dieses Teil an Kunden verkauft werden?" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "Ausgangsteil" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "Parameter Vorlage" @@ -4173,7 +4160,7 @@ msgstr "Wert" msgid "Parameter Value" msgstr "Parameter Wert" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "Standard-Wert" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "Benachrichtigungen für dieses Teil abonnieren" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "Barcode Aktionen" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "QR-Code anzeigen" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "Label drucken" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "Kosteninformationen ansehen" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "Bestands-Aktionen" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "letzte Seriennummer" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "Nach Seriennummer suchen" @@ -5069,7 +5056,7 @@ msgstr "Neue Teilevariante anlegen" msgid "Create a new variant of template '%(full_name)s'." msgstr "Neue Variante von Vorlage anlegen '%(full_name)s'." -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "Unbekannte Datenbank" @@ -5174,38 +5161,42 @@ msgstr "Interne Preisspanne bearbeiten" msgid "Delete Internal Price Break" msgstr "Interne Preisspanne löschen" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5214,36 +5205,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5344,9 +5359,9 @@ msgid "Stock Item Test Report" msgstr "Lagerartikel Test-Bericht" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5398,7 +5413,7 @@ msgid "Quantity is required" msgstr "Menge ist erforderlich" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "Ablaufdatum" @@ -5448,7 +5463,7 @@ msgid "Confirm removal of installed stock items" msgstr "Entfernen der verbauten Lagerartikel bestätigen" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "Besitzer" @@ -5510,7 +5525,7 @@ msgstr "Wo wird dieses Teil normalerweise gelagert?" msgid "Packaging this stock item is stored in" msgstr "Die Verpackung dieses Lagerartikel ist gelagert in" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "verbaut in" @@ -5786,7 +5801,7 @@ msgstr "Dieser Lagerartikel hat keine Kinder" msgid "Test Data" msgstr "Testdaten" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "Test-Bericht" @@ -5818,189 +5833,189 @@ msgstr "Testergebnis bearbeiten" msgid "Delete Test Result" msgstr "Testergebnis löschen" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "Barcode abhängen" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "Barcode anhängen" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "zu Lagerort einscannen" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "Druck Aktionen" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "Bestands-Anpassungs Aktionen" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "Bestand zählen" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "Bestand hinzufügen" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "Bestand entfernen" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "Bestand serialisieren" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "Bestand verschieben" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "Kunden zuweisen" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "zu Bestand zurückgeben" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "Lagerartikel deinstallieren" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "Deinstallieren" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "Lagerartikel installieren" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "Installieren" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "in Variante ändern" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "Lagerartikel duplizieren" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "Lagerartikel bearbeiten" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "Lagerartikel löschen" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "vorherige Seite" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "Zur vorherigen Seriennummer wechseln" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "nächste Seite" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "Zur nächsten Seriennummer wechseln" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "Dieser Lagerartikel lief am %(item.expiry_date)s ab" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "abgelaufen" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "Dieser Lagerartikel läuft am %(item.expiry_date)s ab" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "überfällig" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "Zuletzt aktualisiert" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "Letzte Inventur" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "Keine Inventur ausgeführt" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "Sie gehören nicht zu den Eigentümern dieses Objekts und können es nicht ändern." -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "Dieser Lagerartikel wird gerade hergestellt und kann nicht geändert werden." -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "Ändern des Lagerartikel in der Bauauftrag-Ansicht." -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "Dieser Lagerartikel hat nicht alle Tests bestanden" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "Diesesr Lagerartikel ist serialisiert. Es hat eine eindeutige Seriennummer und die Anzahl kann nicht angepasst werden." -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "Kein Lagerort gesetzt" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "Barcode-Bezeichner" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "Elternposition" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "Kein Hersteller ausgewählt" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "Tests" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "Bestandsstatus bearbeiten" @@ -6419,7 +6434,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6534,41 +6549,45 @@ msgstr "Bestellungs-Einstellungen" msgid "Report Settings" msgstr "Berichts-Einstellungen" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "Kein Wert angegeben" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "Einstellungen ändern" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "Allgemeine Einstellungen bearbeiten" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "Benutzereinstellungen bearbeiten" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "Keine Kategorie-Parametervorlagen gefunden" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "Vorlage bearbeiten" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "Vorlage löschen" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "Keine Teilparametervorlagen gefunden" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "ID" @@ -6883,8 +6902,8 @@ msgstr "InvenTree-Versionsinformationen" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "Schliessen" @@ -7131,15 +7150,15 @@ msgstr "Link hinzufügen" msgid "Add Attachment" msgstr "Anhang hinzufügen" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "Server-Neustart erforderlich" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "Eine Konfigurationsoption wurde geändert, die einen Neustart des Servers erfordert" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "Bitte kontaktieren Sie Ihren Administrator für mehr Informationen" @@ -7167,8 +7186,8 @@ msgstr "Benötigte Menge" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Verfügbar" @@ -7215,11 +7234,11 @@ msgstr "Der angegebene Server muss erreichbar sein" msgid "Remote image must not exceed maximum allowable file size" msgstr "Das Bild darf nicht größer als die maximal-erlaubte Größe sein" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "Keine Antwort" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "keine Antwort vom InvenTree Server" @@ -7231,27 +7250,27 @@ msgstr "Fehler 400: Fehlerhafte Anfrage" msgid "API request returned error code 400" msgstr "Fehler-Code 400 zurückgegeben" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "Fehler 401: Nicht Angemeldet" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "Authentication Kredentials nicht angegeben" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "Fehler 403: keine Berechtigung" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "Fehlende Berechtigung für diese Aktion" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "Fehler 404: Ressource nicht gefunden" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "Die angefragte Ressource kann auf diesem Server nicht gefunden werden" @@ -7263,11 +7282,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "Fehler 408: Zeitüberschreitung" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "Verbindungszeitüberschreitung bei der Datenanforderung" @@ -7336,7 +7355,7 @@ msgid "Unknown response from server" msgstr "Unbekannte Antwort von Server erhalten" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "Ungültige Antwort von Server" @@ -7496,7 +7515,7 @@ msgstr "Stücklisten Ersatzteile bearbeiten" msgid "Substitutes Available" msgstr "Ersatzteile verfügbar" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "Varianten erlaubt" @@ -7540,7 +7559,7 @@ msgstr "Stücklisten-Position bearbeiten" msgid "Delete BOM Item" msgstr "Stücklisten-Position löschen" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "Keine Stücklisten-Position(en) gefunden" @@ -7548,7 +7567,7 @@ msgstr "Keine Stücklisten-Position(en) gefunden" msgid "Are you sure you want to delete this BOM item?" msgstr "Sind Sie sicher, dass Sie diese Stücklisten-Position löschen wollen?" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "benötigtes Teil" @@ -7556,165 +7575,177 @@ msgstr "benötigtes Teil" msgid "Inherited from parent BOM" msgstr "Geerbt von übergeordneter Stückliste" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "Bauauftrag bearbeiten" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "Bauauftrag erstellen" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "Bauauftrag ist unvollständig" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "Bauauftrag fertigstellen" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "Lagerartikel zu diesem Endprodukt zuweisen" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "Bestand von Endpordukt zurücknehmen" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "Endprodukt fertigstellen" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "Endprodukt entfernen" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "Sind Sie sicher, dass sie alle Lagerartikel von diesem Bauauftrag entfernen möchten?" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "Lagerartikel zurücknehmen" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "Endprodukte auswählen" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "Mindestens ein Endprodukt muss ausgewählt werden" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "Endprodukt" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "Endprodukte fertigstellen" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "Keine Allokationen für Bauauftrag gefunden" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "Standort nicht angegeben" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "Keine aktiven Endprodukte gefunden" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "Bestands-Zuordnung bearbeiten" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "Bestands-Zuordnung löschen" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "Zuordnung bearbeiten" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "Zuordnung entfernen" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "Ersatzteile verfügbar" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "Anzahl pro" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "Zugeordnet" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "Bestand bauen" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "Bestand bestellen" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "Bestand zuweisen" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "Anzahl für Bestandszuordnung eingeben" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "Teile auswählen" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "Sie müssen mindestens ein Teil auswählen" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "Wählen Sie den Quellort aus (leer lassen um von allen Standorten zu nehmen)" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "Bestandszuordnung bestätigen" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "Lagerartikel für Bauauftrag zuweisen" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "Keine passenden Lagerstandorte" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "Keine passenden Lagerbestände" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "Keine Bauaufträge passen zur Anfrage" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "Auswählen" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "Bauauftrag ist überfällig" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "Keine Benutzerinformation" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "Keine Information" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "Keine Teile zugeordnet zu" @@ -7945,12 +7976,12 @@ msgid "Select Label Template" msgstr "Label-Vorlage auswählen" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "Abbrechen" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "Abschicken" @@ -7967,39 +7998,39 @@ msgstr "Warte auf Server..." msgid "Show Error Information" msgstr "Fehler-Informationen anzeigen" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "Akzeptieren" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "Lade Daten" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "ungültige Antwort vom Server" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "Formulardaten fehlen bei Serverantwort" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "Formulardaten fehlerhaft" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "JSON Antwort enthält keine Formulardaten" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "Fehler 400: Ungültige Anfrage" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "Fehler 400 von Server erhalten" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "Fehler bei Formulardaten-Anfrage" @@ -8696,7 +8727,7 @@ msgstr "Entfernen" msgid "Add Stock" msgstr "Bestand hinzufügen" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "Hinzufügen" @@ -9108,48 +9139,52 @@ msgstr "Lade Daten" msgid "rows per page" msgstr "Zeilen pro Seite" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "zeige" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "bis" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "von" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "Zeilen" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "Suche" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "Keine passenden Ergebnisse gefunden" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "Zeige/Verstecke Pagination" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "Neu laden" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "umschalten" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "Spalten" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "Alle" @@ -9333,35 +9368,35 @@ msgstr "Berechtigungen" msgid "Important dates" msgstr "wichtige Daten" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "Berechtigung geändert" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "Gruppe" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "Ansicht" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "Berechtigung Einträge anzuzeigen" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "Berechtigung Einträge zu erstellen" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "Ändern" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "Berechtigungen Einträge zu ändern" -#: users/models.py:209 +#: users/models.py:210 msgid "Permission to delete items" msgstr "Berechtigung Einträge zu löschen" diff --git a/InvenTree/locale/el/LC_MESSAGES/django.po b/InvenTree/locale/el/LC_MESSAGES/django.po index 4cbc3642ce..f036c87833 100644 --- a/InvenTree/locale/el/LC_MESSAGES/django.po +++ b/InvenTree/locale/el/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 06:27\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:57\n" "Last-Translator: \n" "Language-Team: Greek\n" "Language: el_GR\n" @@ -34,8 +34,8 @@ msgstr "" msgid "Enter date" msgstr "" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "" @@ -157,8 +157,8 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "" msgid "Filename" msgstr "" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "" @@ -585,7 +585,7 @@ msgstr "" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "" msgid "Confirm deletion of build output" msgstr "" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "" @@ -660,7 +656,7 @@ msgstr "" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "" @@ -683,7 +679,7 @@ msgstr "" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "" @@ -718,9 +714,9 @@ msgstr "" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "" @@ -815,7 +811,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "" @@ -828,7 +824,7 @@ msgstr "" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "" @@ -840,7 +836,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "" @@ -904,8 +900,8 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "" @@ -914,13 +910,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "" msgid "Destination stock item" msgstr "" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "" @@ -1073,7 +1097,6 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" @@ -1112,7 +1135,7 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "" @@ -1135,7 +1158,7 @@ msgstr "" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "" @@ -1146,7 +1169,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "" @@ -1189,26 +1212,6 @@ msgstr "" msgid "Are you sure you wish to cancel this build?" msgstr "" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "" @@ -1230,12 +1233,12 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "" @@ -1265,7 +1268,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "" @@ -1446,19 +1449,7 @@ msgstr "" msgid "Build output deleted" msgstr "" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "" @@ -1499,728 +1490,724 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "" @@ -2377,7 +2364,7 @@ msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "" @@ -2433,7 +2420,7 @@ msgstr "" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "" @@ -2450,7 +2437,7 @@ msgstr "" #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "" @@ -2570,7 +2557,7 @@ msgstr "" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "" @@ -2763,7 +2750,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "" @@ -2816,7 +2803,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "" @@ -3187,7 +3174,7 @@ msgstr "" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "" @@ -3549,7 +3536,7 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "" @@ -3965,7 +3952,7 @@ msgstr "" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "" @@ -4045,7 +4032,7 @@ msgstr "" msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "" @@ -4173,7 +4160,7 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" @@ -7129,15 +7148,15 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "" @@ -7165,8 +7184,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7213,11 +7232,11 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7229,27 +7248,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7261,11 +7280,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7334,7 +7353,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7494,7 +7513,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7538,7 +7557,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7546,7 +7565,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "" @@ -7554,165 +7573,177 @@ msgstr "" msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7943,12 +7974,12 @@ msgid "Select Label Template" msgstr "" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" @@ -7965,39 +7996,39 @@ msgstr "" msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8694,7 +8725,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "" @@ -9106,48 +9137,52 @@ msgstr "" msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "" @@ -9331,35 +9366,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "" -#: users/models.py:209 +#: users/models.py:210 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 586f846e4b..c11b450104 100644 --- a/InvenTree/locale/es/LC_MESSAGES/django.po +++ b/InvenTree/locale/es/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 06:28\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:58\n" "Last-Translator: \n" "Language-Team: Spanish, Mexico\n" "Language: es_MX\n" @@ -34,8 +34,8 @@ msgstr "No se encontró ninguna acción coincidente" msgid "Enter date" msgstr "Ingrese fecha" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "Confirmar" @@ -157,8 +157,8 @@ msgstr "Comentario" msgid "File comment" msgstr "Comentario de archivo" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "Elección no válida" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "Nombre" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "Debe ser un número válido" msgid "Filename" msgstr "Nombre de archivo" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "Alemán" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "Griego" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "Inglés" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "Español" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "Español (México)" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "Francés" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "Hebreo" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "Italiano" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "Japonés" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "Coreano" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "Holandés" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "Noruego" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "Polaco" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "Portugués" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "Ruso" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "Sueco" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "Tailandés" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "Turco" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "Vietnamita" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "Chino" @@ -585,7 +585,7 @@ msgstr "Código de barras asignado al Elemento del Stock" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "Código de barras asignado al Elemento del Stock" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "" msgid "Confirm deletion of build output" msgstr "" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "Marcar construcción como completa" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "¿Deseas cancelar?" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "" @@ -660,7 +656,7 @@ msgstr "Opción no válida para el armado principal" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "Orden de Producción" @@ -683,7 +679,7 @@ msgstr "Referencia de Orden de Producción" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "Referencia" @@ -718,9 +714,9 @@ msgstr "Orden de Producción a la cual esta producción pertenece" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "Referencia de Orden de Venta" msgid "SalesOrder to which this build is allocated" msgstr "Ordenes de Venta a la cual esta producción pertenece" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "Ubicación de origen" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "Fecha de finalización" @@ -815,7 +811,7 @@ msgstr "Fecha de finalización" msgid "completed by" msgstr "terminado por" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "Emitido por" @@ -828,7 +824,7 @@ msgstr "El usuario que emitió esta orden" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "Responsable" @@ -840,7 +836,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "Link externo" @@ -904,8 +900,8 @@ msgstr "La cantidad debe ser 1 para el stock serializado" msgid "Selected stock item not found in BOM" msgstr "Artículo de stock seleccionado no encontrado en BOM" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "" @@ -914,13 +910,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "Instalar en" msgid "Destination stock item" msgstr "Artículo de stock de destino" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "Estado" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "Debe proporcionar adjudicación de artículos" @@ -1073,7 +1097,6 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" @@ -1112,7 +1135,7 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "" @@ -1135,7 +1158,7 @@ msgstr "Vencido" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "Completado" @@ -1146,7 +1169,7 @@ msgstr "Completado" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "Orden de Venta" @@ -1189,26 +1212,6 @@ msgstr "" msgid "Are you sure you wish to cancel this build?" msgstr "" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "" @@ -1230,12 +1233,12 @@ msgstr "Destinación" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "Partes asignadas" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "Lote" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "" @@ -1265,7 +1268,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "Desasignar stock" @@ -1446,19 +1449,7 @@ msgstr "" msgid "Build output deleted" msgstr "" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "" @@ -1499,728 +1490,724 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "Número de días en que artículos de stock se consideran obsoletos antes de caducar" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "Habilitar control de propiedad sobre ubicaciones de stock y artículos" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "Agrupar artículos de stock por referencia de parte en vistas de tabla" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "Mostrar artículos de stock recientemente modificados en la página de inicio" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "Número de elementos de stock recientes a mostrar en la página de índice" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "Mostrar artículos de stock bajo en la página de inicio" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "Mostrar artículos agotados en la página de inicio" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "Mostrar elementos de stock necesarios para construir en la página de inicio" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "Mostrar artículos de stock caducados en la página de inicio" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "Mostrar elementos de stock obsoletos en la página de inicio" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "" @@ -2377,7 +2364,7 @@ msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "" @@ -2433,7 +2420,7 @@ msgstr "" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "" @@ -2450,7 +2437,7 @@ msgstr "" #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "" @@ -2570,7 +2557,7 @@ msgstr "" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "" @@ -2763,7 +2750,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "" @@ -2816,7 +2803,7 @@ msgstr "Artículos de Stock Asignados" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "" @@ -3187,7 +3174,7 @@ msgstr "" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "Número de artículos recibidos" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "" @@ -3549,7 +3536,7 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "" @@ -3965,7 +3952,7 @@ msgstr "" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "" @@ -4045,7 +4032,7 @@ msgstr "" msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "Parte principal" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "" @@ -4173,7 +4160,7 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "Último Inventario" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "Ningún inventario realizado" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "Artículo principal" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" @@ -7129,15 +7148,15 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "" @@ -7165,8 +7184,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7213,11 +7232,11 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7229,27 +7248,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7261,11 +7280,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7334,7 +7353,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7494,7 +7513,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7538,7 +7557,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7546,7 +7565,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "" @@ -7554,165 +7573,177 @@ msgstr "" msgid "Inherited from parent BOM" msgstr "Heredado de BOM principal" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7943,12 +7974,12 @@ msgid "Select Label Template" msgstr "" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" @@ -7965,39 +7996,39 @@ msgstr "" msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8694,7 +8725,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "" @@ -9106,48 +9137,52 @@ msgstr "" msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "" @@ -9331,35 +9366,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "Permiso para ver artículos" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "Permiso para añadir artículos" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "Permisos para editar artículos" -#: users/models.py:209 +#: users/models.py:210 msgid "Permission to delete items" msgstr "Permiso para eliminar artículos" diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po index 77f5ed0cab..f4ab7586e2 100644 --- a/InvenTree/locale/fr/LC_MESSAGES/django.po +++ b/InvenTree/locale/fr/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 06:27\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:57\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -34,8 +34,8 @@ msgstr "Aucune action correspondante trouvée" msgid "Enter date" msgstr "Entrer la date" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "Confirmer" @@ -157,8 +157,8 @@ msgstr "Commentaire" msgid "File comment" msgstr "Commentaire du fichier" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "Choix invalide" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "Nom" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "Doit être un nombre valide" msgid "Filename" msgstr "Nom du fichier" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "Allemand" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "Greek" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "Anglais" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "Spanish" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "Espagnol (Mexique)" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "Français" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "Hebrew" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "Italian" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "Japanese" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "Korean" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "Dutch" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "Norwegian" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "Polonais" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "Portugais" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "Russian" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "Swedish" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "Thai" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "Turc" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "Vietnamese" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "Chinese" @@ -585,7 +585,7 @@ msgstr "" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "Confirmer la création de la sortie de l'assemblage" msgid "Confirm deletion of build output" msgstr "Confirmer la supression de la fabrication" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "Indiquer la fabrication comme terminé" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "Confirmer l'annulation" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "Confirmer l'annulation de la fabrication" @@ -660,7 +656,7 @@ msgstr "Choix invalide pour la fabrication parente" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "Ordre de Fabrication" @@ -683,7 +679,7 @@ msgstr "Référence de l' Ordre de Fabrication" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "Référence" @@ -718,9 +714,9 @@ msgstr "BuildOrder associé a cette fabrication" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "Bon de commande de référence" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "Emplacement d'origine" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "" @@ -815,7 +811,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "" @@ -828,7 +824,7 @@ msgstr "" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "" @@ -840,7 +836,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "Lien Externe" @@ -904,8 +900,8 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "Assemblage" @@ -914,13 +910,13 @@ msgstr "Assemblage" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "Installer dans" msgid "Destination stock item" msgstr "" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "Sortie d'assemblage" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "État" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "L'article doit être en stock" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "La quantité doit être supérieure à zéro" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Quantité disponible ({q}) dépassée" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "" @@ -1073,7 +1097,6 @@ msgstr "Supprimer l'assemblage" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "Compléter l'assemblage" @@ -1112,7 +1135,7 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "Date Cible" @@ -1135,7 +1158,7 @@ msgstr "En retard" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "Terminé" @@ -1146,7 +1169,7 @@ msgstr "Terminé" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "Commandes" @@ -1189,26 +1212,6 @@ msgstr "" msgid "Are you sure you wish to cancel this build?" msgstr "" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "" @@ -1230,12 +1233,12 @@ msgstr "Destination" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "Créé le" @@ -1265,7 +1268,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "" @@ -1446,19 +1449,7 @@ msgstr "" msgid "Build output deleted" msgstr "" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "" @@ -1499,728 +1490,724 @@ msgstr "{name.title()} Fichier" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "Pas de groupe" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "Redémarrage nécessaire" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Nom de la société" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "Devise par défaut" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "Devises par défaut" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "Télécharger depuis l'URL" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "Regex IPN" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "Expression régulière pour la correspondance avec l'IPN de la Pièce" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "Autoriser les IPN dupliqués" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "Permettre à plusieurs pièces de partager le même IPN" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "Autoriser l'édition de l'IPN" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "Permettre de modifier la valeur de l'IPN lors de l'édition d'une pièce" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "Composant" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "Achetable" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "Les pièces sont achetables par défaut" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "Afficher l'assistant d'importation pour certaine vues de produits" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "Taille de la page" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "Rapports de test" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "jours" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "Préfixe des commandes d'achats" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "Activer les mots de passe oubliés" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "Activer les inscriptions" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "Activer le SSO" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "Activer le SSO sur les pages de connexion" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "Email requis" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "Saisie automatique des utilisateurs SSO" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "Courriel en double" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "Afficher les dernières pièces" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "Afficher les dernières modifications du stock" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "" @@ -2377,7 +2364,7 @@ msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "" @@ -2433,7 +2420,7 @@ msgstr "" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "" @@ -2450,7 +2437,7 @@ msgstr "" #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "" @@ -2570,7 +2557,7 @@ msgstr "Télécharger l'image depuis l'URL" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "Nouvelle commande de vente" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "Stock affecté" @@ -2763,7 +2750,7 @@ msgstr "Supprimer les pièces du fournisseur" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "Supprimer" @@ -2816,7 +2803,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "" @@ -3187,7 +3174,7 @@ msgstr "Commande" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "Nombre d'éléments reçus" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "Prix d'achat" @@ -3549,7 +3536,7 @@ msgstr "Dupliquer la sélection" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "" @@ -3965,7 +3952,7 @@ msgstr "" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "Catégorie" @@ -4045,7 +4032,7 @@ msgstr "" msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "" @@ -4173,7 +4160,7 @@ msgstr "Données" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "Propriétaire" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" @@ -7129,15 +7148,15 @@ msgstr "" msgid "Add Attachment" msgstr "Ajouter une pièce jointe" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "" @@ -7165,8 +7184,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Disponible" @@ -7213,11 +7232,11 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7229,27 +7248,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7261,11 +7280,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7334,7 +7353,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7494,7 +7513,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7538,7 +7557,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7546,7 +7565,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "" @@ -7554,165 +7573,177 @@ msgstr "" msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7943,12 +7974,12 @@ msgid "Select Label Template" msgstr "" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "Annuler" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" @@ -7965,39 +7996,39 @@ msgstr "" msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8694,7 +8725,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "" @@ -9106,48 +9137,52 @@ msgstr "" msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "" @@ -9331,35 +9366,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "" -#: users/models.py:209 +#: users/models.py:210 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po index 7386d27feb..ce530b28cd 100644 --- a/InvenTree/locale/he/LC_MESSAGES/django.po +++ b/InvenTree/locale/he/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 06:27\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:57\n" "Last-Translator: \n" "Language-Team: Hebrew\n" "Language: he_IL\n" @@ -34,8 +34,8 @@ msgstr "" msgid "Enter date" msgstr "" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "" @@ -157,8 +157,8 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "" msgid "Filename" msgstr "" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "" @@ -585,7 +585,7 @@ msgstr "" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "" msgid "Confirm deletion of build output" msgstr "" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "" @@ -660,7 +656,7 @@ msgstr "" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "" @@ -683,7 +679,7 @@ msgstr "" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "" @@ -718,9 +714,9 @@ msgstr "" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "" @@ -815,7 +811,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "" @@ -828,7 +824,7 @@ msgstr "" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "" @@ -840,7 +836,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "" @@ -904,8 +900,8 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "" @@ -914,13 +910,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "" msgid "Destination stock item" msgstr "" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "" @@ -1073,7 +1097,6 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" @@ -1112,7 +1135,7 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "" @@ -1135,7 +1158,7 @@ msgstr "" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "" @@ -1146,7 +1169,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "" @@ -1189,26 +1212,6 @@ msgstr "" msgid "Are you sure you wish to cancel this build?" msgstr "" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "" @@ -1230,12 +1233,12 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "" @@ -1265,7 +1268,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "" @@ -1446,19 +1449,7 @@ msgstr "" msgid "Build output deleted" msgstr "" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "" @@ -1499,728 +1490,724 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "" @@ -2377,7 +2364,7 @@ msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "" @@ -2433,7 +2420,7 @@ msgstr "" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "" @@ -2450,7 +2437,7 @@ msgstr "" #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "" @@ -2570,7 +2557,7 @@ msgstr "" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "" @@ -2763,7 +2750,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "" @@ -2816,7 +2803,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "" @@ -3187,7 +3174,7 @@ msgstr "" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "" @@ -3549,7 +3536,7 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "" @@ -3965,7 +3952,7 @@ msgstr "" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "" @@ -4045,7 +4032,7 @@ msgstr "" msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "" @@ -4173,7 +4160,7 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" @@ -7129,15 +7148,15 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "" @@ -7165,8 +7184,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7213,11 +7232,11 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7229,27 +7248,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7261,11 +7280,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7334,7 +7353,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7494,7 +7513,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7538,7 +7557,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7546,7 +7565,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "" @@ -7554,165 +7573,177 @@ msgstr "" msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7943,12 +7974,12 @@ msgid "Select Label Template" msgstr "" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" @@ -7965,39 +7996,39 @@ msgstr "" msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8694,7 +8725,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "" @@ -9106,48 +9137,52 @@ msgstr "" msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "" @@ -9331,35 +9366,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "" -#: users/models.py:209 +#: users/models.py:210 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po index 7dd1b774e0..3bea5cd46f 100644 --- a/InvenTree/locale/id/LC_MESSAGES/django.po +++ b/InvenTree/locale/id/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 06:27\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:57\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -34,8 +34,8 @@ msgstr "Aksi tidak ditemukan" msgid "Enter date" msgstr "Masukkan tanggal" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "Konfirmasi" @@ -157,8 +157,8 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "" msgid "Filename" msgstr "" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "" @@ -585,7 +585,7 @@ msgstr "" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "" msgid "Confirm deletion of build output" msgstr "" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "" @@ -660,7 +656,7 @@ msgstr "" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "" @@ -683,7 +679,7 @@ msgstr "" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "" @@ -718,9 +714,9 @@ msgstr "" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "" @@ -815,7 +811,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "" @@ -828,7 +824,7 @@ msgstr "" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "" @@ -840,7 +836,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "" @@ -904,8 +900,8 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "" @@ -914,13 +910,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "" msgid "Destination stock item" msgstr "" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "" @@ -1073,7 +1097,6 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" @@ -1112,7 +1135,7 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "" @@ -1135,7 +1158,7 @@ msgstr "" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "" @@ -1146,7 +1169,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "" @@ -1189,26 +1212,6 @@ msgstr "" msgid "Are you sure you wish to cancel this build?" msgstr "" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "" @@ -1230,12 +1233,12 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "" @@ -1265,7 +1268,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "" @@ -1446,19 +1449,7 @@ msgstr "" msgid "Build output deleted" msgstr "" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "" @@ -1499,728 +1490,724 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "" @@ -2377,7 +2364,7 @@ msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "" @@ -2433,7 +2420,7 @@ msgstr "" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "" @@ -2450,7 +2437,7 @@ msgstr "" #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "" @@ -2570,7 +2557,7 @@ msgstr "" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "" @@ -2763,7 +2750,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "" @@ -2816,7 +2803,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "" @@ -3187,7 +3174,7 @@ msgstr "" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "" @@ -3549,7 +3536,7 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "" @@ -3965,7 +3952,7 @@ msgstr "" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "" @@ -4045,7 +4032,7 @@ msgstr "" msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "" @@ -4173,7 +4160,7 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" @@ -7129,15 +7148,15 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "" @@ -7165,8 +7184,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7213,11 +7232,11 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7229,27 +7248,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7261,11 +7280,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7334,7 +7353,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7494,7 +7513,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7538,7 +7557,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7546,7 +7565,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "" @@ -7554,165 +7573,177 @@ msgstr "" msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7943,12 +7974,12 @@ msgid "Select Label Template" msgstr "" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" @@ -7965,39 +7996,39 @@ msgstr "" msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8694,7 +8725,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "" @@ -9106,48 +9137,52 @@ msgstr "" msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "" @@ -9331,35 +9366,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "" -#: users/models.py:209 +#: users/models.py:210 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po index bc9564c36d..06cccdc4f0 100644 --- a/InvenTree/locale/it/LC_MESSAGES/django.po +++ b/InvenTree/locale/it/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 06:28\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:58\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -34,8 +34,8 @@ msgstr "Nessuna azione corrispondente trovata" msgid "Enter date" msgstr "Inserisci la data" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "Conferma" @@ -157,8 +157,8 @@ msgstr "Commento" msgid "File comment" msgstr "Commento del file" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "Scelta non valida" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "Nome" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "Deve essere un numero valido" msgid "Filename" msgstr "Nome del file" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "Tedesco" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "Greco" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "Inglese" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "Spagnolo" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "Spagnolo (Messicano)" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "Francese" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "Ebraico" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "Italiano" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "Giapponese" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "Coreano" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "Olandese" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "Norvegese" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "Polacco" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "Portoghese" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "Russo" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "Svedese" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "Thailandese" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "Turco" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "Vietnamita" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "Cinese" @@ -585,7 +585,7 @@ msgstr "" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "Conferma la creazione dell'output di compilazione" msgid "Confirm deletion of build output" msgstr "Conferma la creazione dell'output di compilazione" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "Conferma annullamento" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "" @@ -660,7 +656,7 @@ msgstr "" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "" @@ -683,7 +679,7 @@ msgstr "" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "Riferimento" @@ -718,9 +714,9 @@ msgstr "" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "Numero di riferimento ordine di vendita" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "Posizione Di Origine" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "Data di completamento" @@ -815,7 +811,7 @@ msgstr "Data di completamento" msgid "completed by" msgstr "Completato da" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "Rilasciato da" @@ -828,7 +824,7 @@ msgstr "" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "Responsabile" @@ -840,7 +836,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "Collegamento esterno" @@ -904,8 +900,8 @@ msgstr "La quantità deve essere 1 per lo stock serializzato" msgid "Selected stock item not found in BOM" msgstr "Articolo in giacenza selezionato non trovato nel BOM" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "" @@ -914,13 +910,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "Installa in" msgid "Destination stock item" msgstr "Destinazione articolo in giacenza" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "Posizione per gli output di build completati" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "Stato" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "Distinta base (Bom)" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "L'articolo deve essere disponibile" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "La quantità deve essere maggiore di zero" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Quantità disponibile ({q}) superata" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "Deve essere indicata l'allocazione dell'articolo" @@ -1073,7 +1097,6 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" @@ -1112,7 +1135,7 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "Data scadenza" @@ -1135,7 +1158,7 @@ msgstr "In ritardo" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "Completato" @@ -1146,7 +1169,7 @@ msgstr "Completato" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "Ordini di Vendita" @@ -1189,26 +1212,6 @@ msgstr "" msgid "Are you sure you wish to cancel this build?" msgstr "" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "" @@ -1230,12 +1233,12 @@ msgstr "Destinazione" msgid "Destination location not specified" msgstr "Posizione di destinazione non specificata" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "Lotto" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "Creato" @@ -1265,7 +1268,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "" @@ -1446,19 +1449,7 @@ msgstr "" msgid "Build output deleted" msgstr "" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "Elimina Ordine Build" @@ -1499,728 +1490,724 @@ msgstr "{name.title()} File" msgid "Select {name} file to upload" msgstr "Seleziona il file {name} da caricare" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "Valore impostazioni" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "Deve essere un valore intero" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "Il valore specificato non è un opzione valida" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "Il valore deve essere un valore booleano" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "Il valore deve essere un intero" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "La stringa chiave deve essere univoca" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "Nessun gruppo" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "Riavvio richiesto" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "È stata modificata un'impostazione che richiede un riavvio del server" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "Nome Istanza InvenTree" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "Descrittore stringa per l'istanza del server" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "Utilizza nome istanza" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "Usa il nome dell'istanza nella barra del titolo" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Nome azienda" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "Nome interno dell'azienda" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "URL Base" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "URL di base per l'istanza del server" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "Valuta predefinita" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "Valuta predefinita" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "Scarica dall'URL" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "Consenti il download di immagini e file remoti da URL esterno" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Supporto Codice A Barre" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "Abilita supporto scanner codici a barre" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "IPN Regex" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "Schema di espressione regolare per l'articolo corrispondente IPN" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "Consenti duplicati IPN" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "Permetti a più articoli di condividere lo stesso IPN" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "Permetti modifiche al part number interno (IPN)" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "Consenti di modificare il valore del part number durante la modifica di un articolo" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "Copia I Dati Della distinta base dell'articolo" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "Copia I Dati Parametro dell'articolo" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "Copia i dati dei parametri di default quando si duplica un articolo" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "Copia i dati di prova di default quando si duplica un articolo" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "Copia Template Parametri Categoria" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "Copia i modelli dei parametri categoria quando si crea un articolo" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "Template" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "Gli articoli sono modelli per impostazione predefinita" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "Assemblaggio" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "Gli articoli possono essere assemblate da altri componenti per impostazione predefinita" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "Componente" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "Gli articoli possono essere assemblati da altri componenti per impostazione predefinita" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "Acquistabile" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "Gli articoli sono acquistabili per impostazione predefinita" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "Vendibile" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "Gli articoli sono acquistabili per impostazione predefinita" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "Tracciabile" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "Gli articoli sono tracciabili per impostazione predefinita" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Virtuale" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "Gli articoli sono virtuali per impostazione predefinita" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "Mostra l'importazione nelle viste" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "Mostra la procedura guidata di importazione in alcune viste articoli" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "Mostra il prezzo nei moduli" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "Mostra il prezzo dell'articolo in alcuni moduli" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "Mostra il prezzo nella BOM" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "Includi le informazioni sui prezzi nelle tabelle BOM" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "Mostra articoli correlati" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "Visualizza parti correlate per ogni articolo" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "Crea giacenza iniziale" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "Crea giacenza iniziale sulla creazione articolo" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "Prezzi interni" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "Abilita prezzi interni per gli articoli" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "Prezzo interno come BOM-Price" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "Utilizzare il prezzo interno (se impostato) nel calcolo del prezzo BOM" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "Formato di visualizzazione del nome articolo" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "Formato per visualizzare il nome dell'articolo" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "Abilita Report di Stampa" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "Abilita generazione di report di stampa" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "Modalità Debug" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "Genera report in modalità debug (output HTML)" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "Dimensioni pagina" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "Dimensione predefinita della pagina per i report PDF" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "Stampa di prova" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "Abilita generazione di stampe di prova" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "Scadenza giacenza" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "Abilita funzionalità di scadenza della giacenza" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "Vendi giacenza scaduta" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "Consenti la vendita di stock scaduti" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "Numero di giorni in cui gli articoli in magazzino sono considerati obsoleti prima della scadenza" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "giorni" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "Controllo della proprietà della giacenza" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "Abilita il controllo della proprietà sulle posizioni e gli oggetti in giacenza" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "Raggruppa per articolo" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "Raggruppa le voci di giacenza per riferimento articolo nelle viste della tabella" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "Referenza ordine d'acquisto" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "Abilita password dimenticata" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "Abilita la funzione password dimenticata nelle pagine di accesso" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "Abilita registrazione" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "Abilita auto-registrazione per gli utenti nelle pagine di accesso" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "SSO abilitato" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "Abilita SSO nelle pagine di accesso" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "Email richiesta" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "Richiedi all'utente di fornire una email al momento dell'iscrizione" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "Riempimento automatico degli utenti SSO" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "Compila automaticamente i dettagli dell'utente dai dati dell'account SSO" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "Mostra le categorie sottoscritte" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "Mostra le categorie dei componenti sottoscritti nella homepage" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "Mostra ultimi articoli" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "Visualizzazione dell'etichetta in linea" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "Visualizza le etichette PDF nel browser, invece di scaricare come file" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "Visualizzazione dell'etichetta in linea" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "Visualizza le etichette PDF nel browser, invece di scaricare come file" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "Risultati Dell'Anteprima Di Ricerca" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "Prezzo" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "Articolo di base" @@ -2377,7 +2364,7 @@ msgstr "Seleziona articolo" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "Descrizione articolo costruttore" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "Codice articolo produttore" @@ -2433,7 +2420,7 @@ msgstr "Valore del parametro" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "Unità" @@ -2450,7 +2437,7 @@ msgstr "L'articolo del costruttore collegato deve riferirsi alla stesso articolo #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "Onere minimo (ad esempio tassa di stoccaggio)" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "Confezionamento" @@ -2570,7 +2557,7 @@ msgstr "Scarica immagine dall'URL" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "" @@ -2763,7 +2750,7 @@ msgstr "Elimina articolo fornitore" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "Elimina" @@ -2816,7 +2803,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "Articolo Fornitore" @@ -3187,7 +3174,7 @@ msgstr "" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "" @@ -3549,7 +3536,7 @@ msgstr "Duplica selezionati" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "" @@ -3965,7 +3952,7 @@ msgstr "Parole chiave per migliorare la visibilità nei risultati di ricerca" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "Categoria" @@ -4045,7 +4032,7 @@ msgstr "Quest'articolo può essere acquistato da fornitori esterni?" msgid "Can this part be sold to customers?" msgstr "Questo pezzo può essere venduto ai clienti?" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "" @@ -4173,7 +4160,7 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "Azioni Barcode" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "Mostra QR Code" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "Stampa Etichetta" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "Azioni magazzino" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "Database sconosciuto" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "La quantità è richiesta" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "Data di Scadenza" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "Installato In" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "Scansiona nella posizione" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "Conta giacenza" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "Aggiungi giacenza" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "Rimuovi giacenza" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "Trasferisci giacenza" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "pagina precedente" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "pagina successiva" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "Ultimo aggiornamento" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "Ultimo Inventario" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "Nessun inventario eseguito" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "Nessuna posizione impostata" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "Nessun parametro di categoria trovato" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "Informazioni Versione InvenTree" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "Chiudi" @@ -7130,15 +7149,15 @@ msgstr "" msgid "Add Attachment" msgstr "Aggiungi allegato" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "È necessario riavviare il server" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "È stata modificata un'impostazione che richiede un riavvio del server" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "Contatta l'amministratore per maggiori informazioni" @@ -7166,8 +7185,8 @@ msgstr "Quantità richiesta" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Disponibile" @@ -7214,11 +7233,11 @@ msgstr "Il server remoto deve essere accessibile" msgid "Remote image must not exceed maximum allowable file size" msgstr "L'immagine remota non deve superare la dimensione massima consentita del file" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7230,27 +7249,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7262,11 +7281,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7335,7 +7354,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7495,7 +7514,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7539,7 +7558,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7547,7 +7566,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "" @@ -7555,165 +7574,177 @@ msgstr "" msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "Posizione non specificata" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "Modifica allocazione magazzino" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "Elimina posizione giacenza" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "Modifica Posizione" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "Rimuovi Posizione" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "Specificare il quantitativo assegnato allo stock" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "Seleziona Articoli" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "Seleziona la posizione di origine (lascia vuoto per prendere da tutte le posizioni)" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "Conferma l'assegnazione della giacenza" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "Nessuna posizione di magazzino corrispondente" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7944,12 +7975,12 @@ msgid "Select Label Template" msgstr "Seleziona Modello Etichetta" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "Annulla" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "Invia" @@ -7966,39 +7997,39 @@ msgstr "In attesa del server..." msgid "Show Error Information" msgstr "Informazioni sull'errore" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "Accetta" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "Risposta dal server non valida" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8695,7 +8726,7 @@ msgstr "Prendi" msgid "Add Stock" msgstr "Aggiungi giacenza" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "Aggiungi" @@ -9107,48 +9138,52 @@ msgstr "Caricamento dati" msgid "rows per page" msgstr "righe per pagina" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "Visualizzo" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "a" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "di" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "righe" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "Cerca" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "Nessun risultato corrispondente" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "Mostra/nascondi la paginazione" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "Aggiorna" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "Attiva/disattiva" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "Colonne" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "Tutti" @@ -9332,35 +9367,35 @@ msgstr "Permessi" msgid "Important dates" msgstr "Date Importanti" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "Impostazione autorizzazioni" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "Gruppo" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "Visualizza" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "Autorizzazione a visualizzare gli articoli" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "Autorizzazione ad aggiungere elementi" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "Modificare" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "Permessi per modificare gli elementi" -#: users/models.py:209 +#: users/models.py:210 msgid "Permission to delete items" msgstr "Autorizzazione ad eliminare gli elementi" diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po index 6134a9efff..7dff99a148 100644 --- a/InvenTree/locale/ja/LC_MESSAGES/django.po +++ b/InvenTree/locale/ja/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 06:27\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:58\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -34,8 +34,8 @@ msgstr "一致するアクションが見つかりませんでした" msgid "Enter date" msgstr "日付を入力する" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "確認" @@ -157,8 +157,8 @@ msgstr "コメント:" msgid "File comment" msgstr "ファイルコメント" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "無効な選択です" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "お名前" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "有効な数字でなければなりません" msgid "Filename" msgstr "" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "ドイツ語" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "英語" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "フランス語" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "ポーランド語" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "トルコ語" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "" @@ -585,7 +585,7 @@ msgstr "" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "" msgid "Confirm deletion of build output" msgstr "" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "" @@ -660,7 +656,7 @@ msgstr "" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "" @@ -683,7 +679,7 @@ msgstr "" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "" @@ -718,9 +714,9 @@ msgstr "" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "" @@ -815,7 +811,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "" @@ -828,7 +824,7 @@ msgstr "" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "" @@ -840,7 +836,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "" @@ -904,8 +900,8 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "" @@ -914,13 +910,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "パーツを割り当てるためにビルドする" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "" msgid "Destination stock item" msgstr "" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "" @@ -1073,7 +1097,6 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" @@ -1112,7 +1135,7 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "" @@ -1135,7 +1158,7 @@ msgstr "" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "" @@ -1146,7 +1169,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "" @@ -1189,26 +1212,6 @@ msgstr "" msgid "Are you sure you wish to cancel this build?" msgstr "" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "" @@ -1230,12 +1233,12 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "" @@ -1265,7 +1268,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "" @@ -1446,19 +1449,7 @@ msgstr "" msgid "Build output deleted" msgstr "" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "" @@ -1499,728 +1490,724 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "テンプレート" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "パーツはデフォルトのテンプレートです" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "アセンブリ" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "パーツはデフォルトで他のコンポーネントから組み立てることができます" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "コンポーネント" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "パーツはデフォルトでサブコンポーネントとして使用できます" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "購入可能" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "パーツはデフォルトで購入可能です" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "パーツはデフォルトで販売可能です" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "追跡可能" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "パーツはデフォルトで追跡可能です" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "" @@ -2377,7 +2364,7 @@ msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "メーカー・パーツ" @@ -2433,7 +2420,7 @@ msgstr "" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "" @@ -2450,7 +2437,7 @@ msgstr "" #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "" @@ -2570,7 +2557,7 @@ msgstr "" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "" @@ -2763,7 +2750,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "" @@ -2816,7 +2803,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "" @@ -3187,7 +3174,7 @@ msgstr "" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "" @@ -3549,7 +3536,7 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "" @@ -3965,7 +3952,7 @@ msgstr "" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "" @@ -4045,7 +4032,7 @@ msgstr "" msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "" @@ -4173,7 +4160,7 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" @@ -7129,15 +7148,15 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "" @@ -7165,8 +7184,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7213,11 +7232,11 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7229,27 +7248,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7261,11 +7280,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7334,7 +7353,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7494,7 +7513,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7538,7 +7557,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7546,7 +7565,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "" @@ -7554,165 +7573,177 @@ msgstr "" msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7943,12 +7974,12 @@ msgid "Select Label Template" msgstr "" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" @@ -7965,39 +7996,39 @@ msgstr "" msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8694,7 +8725,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "" @@ -9106,48 +9137,52 @@ msgstr "" msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "" @@ -9331,35 +9366,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "" -#: users/models.py:209 +#: users/models.py:210 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.po b/InvenTree/locale/ko/LC_MESSAGES/django.po index 19ec20c6a9..92723e867d 100644 --- a/InvenTree/locale/ko/LC_MESSAGES/django.po +++ b/InvenTree/locale/ko/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 06:27\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:57\n" "Last-Translator: \n" "Language-Team: Korean\n" "Language: ko_KR\n" @@ -34,8 +34,8 @@ msgstr "" msgid "Enter date" msgstr "" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "" @@ -157,8 +157,8 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "" msgid "Filename" msgstr "" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "" @@ -585,7 +585,7 @@ msgstr "" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "" msgid "Confirm deletion of build output" msgstr "" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "" @@ -660,7 +656,7 @@ msgstr "" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "" @@ -683,7 +679,7 @@ msgstr "" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "" @@ -718,9 +714,9 @@ msgstr "" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "" @@ -815,7 +811,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "" @@ -828,7 +824,7 @@ msgstr "" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "" @@ -840,7 +836,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "" @@ -904,8 +900,8 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "" @@ -914,13 +910,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "" msgid "Destination stock item" msgstr "" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "" @@ -1073,7 +1097,6 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" @@ -1112,7 +1135,7 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "" @@ -1135,7 +1158,7 @@ msgstr "" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "" @@ -1146,7 +1169,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "" @@ -1189,26 +1212,6 @@ msgstr "" msgid "Are you sure you wish to cancel this build?" msgstr "" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "" @@ -1230,12 +1233,12 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "" @@ -1265,7 +1268,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "" @@ -1446,19 +1449,7 @@ msgstr "" msgid "Build output deleted" msgstr "" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "" @@ -1499,728 +1490,724 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "" @@ -2377,7 +2364,7 @@ msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "" @@ -2433,7 +2420,7 @@ msgstr "" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "" @@ -2450,7 +2437,7 @@ msgstr "" #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "" @@ -2570,7 +2557,7 @@ msgstr "" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "" @@ -2763,7 +2750,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "" @@ -2816,7 +2803,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "" @@ -3187,7 +3174,7 @@ msgstr "" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "" @@ -3549,7 +3536,7 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "" @@ -3965,7 +3952,7 @@ msgstr "" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "" @@ -4045,7 +4032,7 @@ msgstr "" msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "" @@ -4173,7 +4160,7 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" @@ -7129,15 +7148,15 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "" @@ -7165,8 +7184,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7213,11 +7232,11 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7229,27 +7248,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7261,11 +7280,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7334,7 +7353,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7494,7 +7513,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7538,7 +7557,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7546,7 +7565,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "" @@ -7554,165 +7573,177 @@ msgstr "" msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7943,12 +7974,12 @@ msgid "Select Label Template" msgstr "" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" @@ -7965,39 +7996,39 @@ msgstr "" msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8694,7 +8725,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "" @@ -9106,48 +9137,52 @@ msgstr "" msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "" @@ -9331,35 +9366,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "" -#: users/models.py:209 +#: users/models.py:210 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.po b/InvenTree/locale/nl/LC_MESSAGES/django.po index ee5aec7e36..65bba6b9d6 100644 --- a/InvenTree/locale/nl/LC_MESSAGES/django.po +++ b/InvenTree/locale/nl/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2022-01-03 09:49\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:57\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -34,8 +34,8 @@ msgstr "Geen overeenkomende actie gevonden" msgid "Enter date" msgstr "Voer datum in" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "Bevestigen" @@ -157,8 +157,8 @@ msgstr "Opmerking" msgid "File comment" msgstr "Bijlage opmerking" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "Ongeldige keuze" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "Naam" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "Moet een geldig nummer zijn" msgid "Filename" msgstr "Bestandsnaam" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "Duits" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "Grieks" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "Engels" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "Spaans" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "Spaans (Mexicaans)" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "Frans" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "Hebreeuws" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "Italiaans" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "Japans" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "Koreaans" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "Nederlands" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "Noors" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "Pools" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "Portugees" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "Russisch" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "Zweeds" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "Thais" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "Turks" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "Vietnamees" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "Chinees" @@ -585,7 +585,7 @@ msgstr "" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "Bevestig het maken van build-output" msgid "Confirm deletion of build output" msgstr "Bevestig verwijdering van build-output" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "Markeer build als voltooid" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "Annuleren bevestigen" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "Bevestig annulering van de build" @@ -660,7 +656,7 @@ msgstr "Ongeldige keuze voor bovenliggende build" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "Productie-opdracht" @@ -683,7 +679,7 @@ msgstr "Productie-opdracht referentie" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "Referentie" @@ -718,9 +714,9 @@ msgstr "Productie-opdracht waar dit product aan is toegewezen" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "Verkooporder referentie" msgid "SalesOrder to which this build is allocated" msgstr "Verkooporder waar dit product aan is toegewezen" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "Bron Locatie" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "Opleveringsdatum" @@ -815,7 +811,7 @@ msgstr "Opleveringsdatum" msgid "completed by" msgstr "voltooid door" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "" @@ -828,7 +824,7 @@ msgstr "Gebruiker die de productie-opdracht heeft gegeven" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "Verantwoordelijke" @@ -840,7 +836,7 @@ msgstr "Gebruiker verantwoordelijk voor deze productie-opdracht" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "Externe Link" @@ -904,8 +900,8 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "Product" @@ -914,13 +910,13 @@ msgstr "Product" msgid "Build to allocate parts" msgstr "Bouw om onderdelen toe te wijzen" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "Installeren in" msgid "Destination stock item" msgstr "Bestemming voorraadartikel" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "Status" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "" @@ -1073,7 +1097,6 @@ msgstr "Verwijder bouw" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "Voltooi Build" @@ -1112,7 +1135,7 @@ msgstr "Voorraad is niet volledig toegewezen aan deze productie-opdracht" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "Streefdatum" @@ -1135,7 +1158,7 @@ msgstr "Achterstallig" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "Voltooid" @@ -1146,7 +1169,7 @@ msgstr "Voltooid" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "Verkooporder" @@ -1189,26 +1212,6 @@ msgstr "Voer serienummers in om meerdere bouw-outputs te genereren" msgid "Are you sure you wish to cancel this build?" msgstr "Weet je zeker dat je de bouw wilt annuleren?" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "Productie-opdracht is voltooid" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "Productie-opdracht is onvolledig" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "Onvoltooide bouw outputs blijven" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "Build details" @@ -1230,12 +1233,12 @@ msgstr "Bestemming" msgid "Destination location not specified" msgstr "Bestemmingslocatie niet opgegeven" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "Toegewezen onderdelen" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "Batch" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "Gecreëerd" @@ -1265,7 +1268,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "Voorraad toewijzen aan Product" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "Niet toegewezen voorraad" @@ -1446,19 +1449,7 @@ msgstr "" msgid "Build output deleted" msgstr "" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "" @@ -1499,728 +1490,724 @@ msgstr "" msgid "Select {name} file to upload" msgstr "Kies {name} bestand om te uploaden" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "Waarde van de instelling" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "Moet een geheel getal zijn" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "Gekozen waarde is geen geldige optie" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "Waarde moet een booleaanse waarde zijn" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "Waarde moet een geheel getal zijn" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "Sleutelreeks moet uniek zijn" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "Inventree Instantie Naam" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "String-beschrijving voor de server instantie" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "Gebruik de instantie naam" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "Gebruik de naam van de instantie in de titelbalk" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Bedrijfsnaam" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "Interne bedrijfsnaam" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "Basis URL" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "Basis URL voor serverinstantie" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "Standaard valuta" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "Standaard valuta" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "Download van URL" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "Download van afbeeldingen en bestanden vanaf een externe URL toestaan" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Barcode ondersteuning" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "Barcodescanner ondersteuning inschakelen" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "IPN Regex" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "Reguliere expressiepatroon voor het corresponderen van deel IPN" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "Dubbele IPN toestaan" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "Toestaan dat meerdere onderdelen dezelfde IPN gebruiken" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "Bewerken IPN toestaan" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "Sta het wijzigen van de IPN toe tijdens het bewerken van een onderdeel" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "Samenstelling" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "Onderdelen kunnen standaard vanuit andere delen worden samengesteld" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "Interne prijzen" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "Foutopsporingsmodus" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "Paginagrootte" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "Testrapport" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "Verlopen voorraad" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "Verlopen voorraad functionaliteit inschakelen" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "Verkoop verlopen voorraad" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "Verkoop verlopen voorraad toestaan" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "dagen" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "" @@ -2377,7 +2364,7 @@ msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "Omschrijving onderdeel fabrikant" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "Fabrikant onderdeel" @@ -2433,7 +2420,7 @@ msgstr "" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "" @@ -2450,7 +2437,7 @@ msgstr "Gekoppeld fabrikant onderdeel moet verwijzen naar hetzelfde basis onderd #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "" @@ -2570,7 +2557,7 @@ msgstr "" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "" @@ -2763,7 +2750,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "" @@ -2816,7 +2803,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "" @@ -3187,7 +3174,7 @@ msgstr "" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "" @@ -3549,7 +3536,7 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "" @@ -3965,7 +3952,7 @@ msgstr "" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "" @@ -4045,7 +4032,7 @@ msgstr "" msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "" @@ -4173,7 +4160,7 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "QR-code weergeven" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "Label afdrukken" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "Voorraad acties" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "Scan naar locatie" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "Voorraad tellen" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "Voorraad overzetten" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "Geen Locatie ingesteld" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "Geen fabrikant geselecteerd" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" @@ -7129,15 +7148,15 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "" @@ -7165,8 +7184,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Beschikbaar" @@ -7213,11 +7232,11 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7229,27 +7248,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7261,11 +7280,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7334,7 +7353,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7494,7 +7513,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7538,7 +7557,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7546,7 +7565,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "" @@ -7554,165 +7573,177 @@ msgstr "" msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "Productie-opdracht is onvolledig" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "Locatie is niet opgegeven" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "Voorraadtoewijzing bewerken" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "Voorraadtoewijzing verwijderen" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "Toegewezen" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "Voorraad toewijzen" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "Onderdelen selecteren" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "Er moet op zijn minst één onderdeel toegewezen worden" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "Selecteer bron locatie (laat het veld leeg om iedere locatie te gebruiken)" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "Bevestig de voorraadtoewijzing" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7943,12 +7974,12 @@ msgid "Select Label Template" msgstr "" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" @@ -7965,39 +7996,39 @@ msgstr "" msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8694,7 +8725,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "" @@ -9106,48 +9137,52 @@ msgstr "" msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "" @@ -9331,35 +9366,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "" -#: users/models.py:209 +#: users/models.py:210 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/no/LC_MESSAGES/django.po b/InvenTree/locale/no/LC_MESSAGES/django.po index b625da1576..340a4b4fc7 100644 --- a/InvenTree/locale/no/LC_MESSAGES/django.po +++ b/InvenTree/locale/no/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 06:27\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:57\n" "Last-Translator: \n" "Language-Team: Norwegian\n" "Language: no_NO\n" @@ -34,8 +34,8 @@ msgstr "Ingen samsvarende handling funnet" msgid "Enter date" msgstr "Oppgi dato" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "Bekreft" @@ -157,8 +157,8 @@ msgstr "Kommenter" msgid "File comment" msgstr "Kommentar til fil" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "Ugyldig valg" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "Navn" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "Nummer må være gyldig" msgid "Filename" msgstr "" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "Tysk" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "Gresk" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "Engelsk" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "Spansk" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "Fransk" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "Hebraisk" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "Italiensk" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "Japansk" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "Koreansk" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "Nederlandsk" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "Norsk" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "Polsk" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "Russisk" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "Svensk" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "Thailandsk" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "Tyrkisk" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "Vietnamesisk" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "Kinesisk" @@ -585,7 +585,7 @@ msgstr "" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "" msgid "Confirm deletion of build output" msgstr "" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "" @@ -660,7 +656,7 @@ msgstr "" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "" @@ -683,7 +679,7 @@ msgstr "" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "" @@ -718,9 +714,9 @@ msgstr "" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "" @@ -815,7 +811,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "" @@ -828,7 +824,7 @@ msgstr "" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "" @@ -840,7 +836,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "" @@ -904,8 +900,8 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "" @@ -914,13 +910,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "" msgid "Destination stock item" msgstr "" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "" @@ -1073,7 +1097,6 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" @@ -1112,7 +1135,7 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "" @@ -1135,7 +1158,7 @@ msgstr "" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "" @@ -1146,7 +1169,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "" @@ -1189,26 +1212,6 @@ msgstr "" msgid "Are you sure you wish to cancel this build?" msgstr "" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "" @@ -1230,12 +1233,12 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "" @@ -1265,7 +1268,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "" @@ -1446,19 +1449,7 @@ msgstr "" msgid "Build output deleted" msgstr "" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "" @@ -1499,728 +1490,724 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "" @@ -2377,7 +2364,7 @@ msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "" @@ -2433,7 +2420,7 @@ msgstr "" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "" @@ -2450,7 +2437,7 @@ msgstr "" #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "" @@ -2570,7 +2557,7 @@ msgstr "" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "" @@ -2763,7 +2750,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "" @@ -2816,7 +2803,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "" @@ -3187,7 +3174,7 @@ msgstr "" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "" @@ -3549,7 +3536,7 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "" @@ -3965,7 +3952,7 @@ msgstr "" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "" @@ -4045,7 +4032,7 @@ msgstr "" msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "" @@ -4173,7 +4160,7 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" @@ -7129,15 +7148,15 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "" @@ -7165,8 +7184,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7213,11 +7232,11 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7229,27 +7248,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7261,11 +7280,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7334,7 +7353,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7494,7 +7513,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7538,7 +7557,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7546,7 +7565,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "" @@ -7554,165 +7573,177 @@ msgstr "" msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7943,12 +7974,12 @@ msgid "Select Label Template" msgstr "" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" @@ -7965,39 +7996,39 @@ msgstr "" msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8694,7 +8725,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "" @@ -9106,48 +9137,52 @@ msgstr "" msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "" @@ -9331,35 +9366,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "" -#: users/models.py:209 +#: users/models.py:210 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po index 7d650776d2..794e1de29d 100644 --- a/InvenTree/locale/pl/LC_MESSAGES/django.po +++ b/InvenTree/locale/pl/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 16:26\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:58\n" "Last-Translator: \n" "Language-Team: Polish\n" "Language: pl_PL\n" @@ -34,8 +34,8 @@ msgstr "Nie znaleziono pasującej akcji" msgid "Enter date" msgstr "Wprowadź dane" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "Potwierdź" @@ -157,8 +157,8 @@ msgstr "Komentarz" msgid "File comment" msgstr "Komentarz pliku" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "Błędny wybór" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "Nazwa" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "Numer musi być prawidłowy" msgid "Filename" msgstr "Nazwa pliku" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "Niemiecki" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "Grecki" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "Angielski" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "Hiszpański" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "Hiszpański (Meksyk)" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "Francuski" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "Hebrajski" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "Włoski" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "Japoński" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "Koreański" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "Holenderski" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "Norweski" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "Polski" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "Portugalski" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "Rosyjski" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "Szwedzki" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "Tajski" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "Turecki" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "Wietnamski" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "Chiński" @@ -585,7 +585,7 @@ msgstr "" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "" msgid "Confirm deletion of build output" msgstr "" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "Oznacz budowę jako ukończoną" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "Na pewno anulować?" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "" @@ -660,7 +656,7 @@ msgstr "" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "Zlecenie Budowy" @@ -683,7 +679,7 @@ msgstr "Odwołanie do zamówienia wykonania" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "Referencja" @@ -718,9 +714,9 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "Odwołanie do zamówienia sprzedaży" msgid "SalesOrder to which this build is allocated" msgstr "Zamówienie sprzedaży, do którego budowa jest przypisana" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "Lokalizacja źródła" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "Data zakończenia" @@ -815,7 +811,7 @@ msgstr "Data zakończenia" msgid "completed by" msgstr "zrealizowane przez" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "Wydany przez" @@ -828,7 +824,7 @@ msgstr "Użytkownik, który wydał to zamówienie" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "Odpowiedzialny" @@ -840,7 +836,7 @@ msgstr "Użytkownik odpowiedzialny za to zamówienie budowy" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "Link Zewnętrzny" @@ -904,8 +900,8 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "Budowa" @@ -914,13 +910,13 @@ msgstr "Budowa" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "Zainstaluj do" msgid "Destination stock item" msgstr "Docelowa lokalizacja magazynowa przedmiotu" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "Status" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "Towar musi znajdować się w magazynie" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "Ilość musi być większa niż zero" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "" @@ -1073,7 +1097,6 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" @@ -1112,7 +1135,7 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "Data docelowa" @@ -1135,7 +1158,7 @@ msgstr "Zaległe" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "Zakończone" @@ -1146,7 +1169,7 @@ msgstr "Zakończone" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "Zamówienie zakupu" @@ -1189,26 +1212,6 @@ msgstr "" msgid "Are you sure you wish to cancel this build?" msgstr "Czy na pewno przerwać tę budowę?" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "Szczegóły budowy" @@ -1230,12 +1233,12 @@ msgstr "Przeznaczenie" msgid "Destination location not specified" msgstr "Nie określono lokalizacji docelowej" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "Partia" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "Utworzony" @@ -1265,7 +1268,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "Przydziel zapasy do budowy" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "Cofnij przydział zapasów" @@ -1446,19 +1449,7 @@ msgstr "" msgid "Build output deleted" msgstr "" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "" @@ -1499,728 +1490,724 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "Ustawienia wartości" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "Nazwa instancji InvenTree" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Nazwa firmy" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "Bazowy URL" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "Bazowy adres URL dla instancji serwera" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "Pobierz z adresu URL" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "Zezwól na pobieranie zewnętrznych obrazów i plików z zewnętrznego URL" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Obsługa kodu kreskowego" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "Włącz obsługę skanera kodów" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "Wyrażenie regularne IPN" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "Zezwól na powtarzający się IPN" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "Zezwól na edycję IPN" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "Skopiuj BOM komponentu" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "Szablon" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "Złożenie" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "Komponent" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "Możliwość zakupu" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "Części są domyślnie z możliwością zakupu" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "Możliwość sprzedaży" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "Części są domyślnie z możliwością sprzedaży" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "Możliwość śledzenia" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "Części są domyślnie z możliwością śledzenia" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Wirtualny" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "Części są domyślnie wirtualne" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "Tryb Debugowania" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "Rozmiar strony" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "Raporty testów" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "Włącz generowanie raportów testów" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "dni" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "Grupuj według komponentu" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "Pokaż ilość w formularzach" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "Cena" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "Część bazowa" @@ -2377,7 +2364,7 @@ msgstr "Wybierz część" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "Część producenta" @@ -2433,7 +2420,7 @@ msgstr "" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "Jednostki" @@ -2450,7 +2437,7 @@ msgstr "" #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "Opakowanie" @@ -2570,7 +2557,7 @@ msgstr "" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "" @@ -2763,7 +2750,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "Usuń" @@ -2816,7 +2803,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "" @@ -3187,7 +3174,7 @@ msgstr "Zamówienie" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "Cena zakupu" @@ -3549,7 +3536,7 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "Akcje" @@ -3965,7 +3952,7 @@ msgstr "" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "Kategoria" @@ -4045,7 +4032,7 @@ msgstr "" msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "Część nadrzędna" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "" @@ -4173,7 +4160,7 @@ msgstr "Dane" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "Wartość domyślna" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "Akcje kodów kreskowych" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "Pokaż Kod QR" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "Drukuj etykietę" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "Akcje magazynowe" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "Ostatni numer seryjny" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "Data ważności" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "Termin minął" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "Ostatnia aktualizacja" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "Ostatnia inwentaryzacja" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "Lokacje nie są ustawione" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "Skaner kodów" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" @@ -7129,15 +7148,15 @@ msgstr "" msgid "Add Attachment" msgstr "Dodaj załącznik" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "" @@ -7165,8 +7184,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Dostępne" @@ -7213,11 +7232,11 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7229,27 +7248,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "Błąd 403: Odmowa dostępu" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "Nie masz uprawnień wymaganych do dostępu do tej funkcji" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7261,11 +7280,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7334,7 +7353,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7494,7 +7513,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7538,7 +7557,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7546,7 +7565,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "" @@ -7554,165 +7573,177 @@ msgstr "" msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "Ilość za" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "Przydzielono" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "Potwierdź przydział zapasów" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7943,12 +7974,12 @@ msgid "Select Label Template" msgstr "" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" @@ -7965,39 +7996,39 @@ msgstr "" msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8694,7 +8725,7 @@ msgstr "" msgid "Add Stock" msgstr "Dodaj stan" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "Dodaj" @@ -9106,48 +9137,52 @@ msgstr "" msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "" @@ -9331,35 +9366,35 @@ msgstr "Uprawnienia" msgid "Important dates" msgstr "" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "Uprawnienia nadane" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "Uprawnienie do wyświetlania przedmiotów" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "Uprawnienie do dodawania przedmiotów" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "Uprawnienie do edycji przedmiotów" -#: users/models.py:209 +#: users/models.py:210 msgid "Permission to delete items" msgstr "Uprawnienie do usuwania przedmiotów" diff --git a/InvenTree/locale/pt/LC_MESSAGES/django.po b/InvenTree/locale/pt/LC_MESSAGES/django.po index 34654d95ee..c7cba4671b 100644 --- a/InvenTree/locale/pt/LC_MESSAGES/django.po +++ b/InvenTree/locale/pt/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 06:27\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:57\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -34,8 +34,8 @@ msgstr "" msgid "Enter date" msgstr "" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "" @@ -157,8 +157,8 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "" msgid "Filename" msgstr "" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "" @@ -585,7 +585,7 @@ msgstr "" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "" msgid "Confirm deletion of build output" msgstr "" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "" @@ -660,7 +656,7 @@ msgstr "" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "" @@ -683,7 +679,7 @@ msgstr "" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "" @@ -718,9 +714,9 @@ msgstr "" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "" @@ -815,7 +811,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "" @@ -828,7 +824,7 @@ msgstr "" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "" @@ -840,7 +836,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "" @@ -904,8 +900,8 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "" @@ -914,13 +910,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "" msgid "Destination stock item" msgstr "" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "" @@ -1073,7 +1097,6 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" @@ -1112,7 +1135,7 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "" @@ -1135,7 +1158,7 @@ msgstr "" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "" @@ -1146,7 +1169,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "" @@ -1189,26 +1212,6 @@ msgstr "" msgid "Are you sure you wish to cancel this build?" msgstr "" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "" @@ -1230,12 +1233,12 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "" @@ -1265,7 +1268,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "" @@ -1446,19 +1449,7 @@ msgstr "" msgid "Build output deleted" msgstr "" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "" @@ -1499,728 +1490,724 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "" @@ -2377,7 +2364,7 @@ msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "" @@ -2433,7 +2420,7 @@ msgstr "" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "" @@ -2450,7 +2437,7 @@ msgstr "" #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "" @@ -2570,7 +2557,7 @@ msgstr "" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "" @@ -2763,7 +2750,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "" @@ -2816,7 +2803,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "" @@ -3187,7 +3174,7 @@ msgstr "" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "" @@ -3549,7 +3536,7 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "" @@ -3965,7 +3952,7 @@ msgstr "" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "" @@ -4045,7 +4032,7 @@ msgstr "" msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "" @@ -4173,7 +4160,7 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" @@ -7129,15 +7148,15 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "" @@ -7165,8 +7184,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7213,11 +7232,11 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7229,27 +7248,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7261,11 +7280,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7334,7 +7353,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7494,7 +7513,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7538,7 +7557,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7546,7 +7565,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "" @@ -7554,165 +7573,177 @@ msgstr "" msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7943,12 +7974,12 @@ msgid "Select Label Template" msgstr "" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" @@ -7965,39 +7996,39 @@ msgstr "" msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8694,7 +8725,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "" @@ -9106,48 +9137,52 @@ msgstr "" msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "" @@ -9331,35 +9366,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "" -#: users/models.py:209 +#: users/models.py:210 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 63739f4e60..4a369c47ae 100644 --- a/InvenTree/locale/ru/LC_MESSAGES/django.po +++ b/InvenTree/locale/ru/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 06:27\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:58\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -34,8 +34,8 @@ msgstr "Соответствующее действие не найдено" msgid "Enter date" msgstr "Введите дату" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "Подтвердить" @@ -157,8 +157,8 @@ msgstr "Комментарий" msgid "File comment" msgstr "Комментарий к файлу" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "Неверный выбор" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "Название" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "Должно быть действительным номером" msgid "Filename" msgstr "Имя файла" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "Немецкий" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "Греческий" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "Английский" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "Испанский" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "Испанский (Мексика)" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "Французский" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "Иврит" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "Итальянский" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "Японский" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "Корейский" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "Голландский" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "Норвежский" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "Польский" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "Португальский" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "Русский" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "Шведский" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "Тайский" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "Турецкий" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "Вьетнамский" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "Китайский" @@ -585,7 +585,7 @@ msgstr "" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "Подтвердите создание выходной информа msgid "Confirm deletion of build output" msgstr "Подтвердите удаление результатов сборки" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "Пометить сборку как завершенную" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "Подтвердите отмену" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "Подтвердите отмену сборки" @@ -660,7 +656,7 @@ msgstr "Неверный выбор для родительской сборки #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "Порядок сборки" @@ -683,7 +679,7 @@ msgstr "Ссылка на заказ" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "Отсылка" @@ -718,9 +714,9 @@ msgstr "" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "Отсылка на заказ" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "Расположение источника" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "Целевая дата для сборки. Сборка будет просрочена после этой даты." #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "Дата завершения" @@ -815,7 +811,7 @@ msgstr "Дата завершения" msgid "completed by" msgstr "выполнено" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "Выдал/ла" @@ -828,7 +824,7 @@ msgstr "Пользователь, выпустивший этот заказ н #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "Ответственный" @@ -840,7 +836,7 @@ msgstr "Пользователь ответственный за этот зак #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "Внешняя ссылка" @@ -904,8 +900,8 @@ msgstr "Количество должно быть 1 для сериализов msgid "Selected stock item not found in BOM" msgstr "Выбранный предмет со складом не найден в BOM" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "Сборка" @@ -914,13 +910,13 @@ msgstr "Сборка" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "" msgid "Destination stock item" msgstr "" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "Статус" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "BOM Компонент" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "Компонент должен быть в наличии" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "Количество должно быть больше нуля" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Превышено доступное количество ({q})" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "" @@ -1073,7 +1097,6 @@ msgstr "Удалить сборку" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "Завершить сборку" @@ -1112,7 +1135,7 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "Целевая дата" @@ -1135,7 +1158,7 @@ msgstr "Просрочено" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "Завершённые" @@ -1146,7 +1169,7 @@ msgstr "Завершённые" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "Заказ покупателя" @@ -1189,26 +1212,6 @@ msgstr "" msgid "Are you sure you wish to cancel this build?" msgstr "" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "" @@ -1230,12 +1233,12 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "Партия" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "Создано" @@ -1265,7 +1268,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "" @@ -1446,19 +1449,7 @@ msgstr "" msgid "Build output deleted" msgstr "" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "" @@ -1499,728 +1490,724 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "" @@ -2377,7 +2364,7 @@ msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "" @@ -2433,7 +2420,7 @@ msgstr "" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "" @@ -2450,7 +2437,7 @@ msgstr "" #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "" @@ -2570,7 +2557,7 @@ msgstr "" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "" @@ -2763,7 +2750,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "" @@ -2816,7 +2803,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "" @@ -3187,7 +3174,7 @@ msgstr "" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "" @@ -3549,7 +3536,7 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "" @@ -3965,7 +3952,7 @@ msgstr "" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "" @@ -4045,7 +4032,7 @@ msgstr "" msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "" @@ -4173,7 +4160,7 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" @@ -7129,15 +7148,15 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "" @@ -7165,8 +7184,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7213,11 +7232,11 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7229,27 +7248,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7261,11 +7280,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7334,7 +7353,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7494,7 +7513,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7538,7 +7557,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7546,7 +7565,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "" @@ -7554,165 +7573,177 @@ msgstr "" msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "Подтвердите выделение запасов" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7943,12 +7974,12 @@ msgid "Select Label Template" msgstr "" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" @@ -7965,39 +7996,39 @@ msgstr "" msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8694,7 +8725,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "" @@ -9106,48 +9137,52 @@ msgstr "" msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "" @@ -9331,35 +9366,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "" -#: users/models.py:209 +#: users/models.py:210 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.po b/InvenTree/locale/sv/LC_MESSAGES/django.po index f4015e78ec..01ce4d0e48 100644 --- a/InvenTree/locale/sv/LC_MESSAGES/django.po +++ b/InvenTree/locale/sv/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 06:27\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:57\n" "Last-Translator: \n" "Language-Team: Swedish\n" "Language: sv_SE\n" @@ -34,8 +34,8 @@ msgstr "Ingen matchande åtgärd hittades" msgid "Enter date" msgstr "Ange datum" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "Bekräfta" @@ -157,8 +157,8 @@ msgstr "Kommentar" msgid "File comment" msgstr "Fil kommentar" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "Ogiltigt val" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "Namn" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "Måste vara ett giltigt nummer" msgid "Filename" msgstr "Filnamn" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "Tyska" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "Grekiska" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "Engelska" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "Spanska" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "Franska" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "Hebreiska" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "Italienska" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "Japanska" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "Koreanska" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "Nederländska" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "Norska" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "Polska" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "Ryska" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "Svenska" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "Thailändska" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "Turkiska" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "Vietnamesiska" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "Kinesiska" @@ -585,7 +585,7 @@ msgstr "" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "" msgid "Confirm deletion of build output" msgstr "" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "" @@ -660,7 +656,7 @@ msgstr "" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "" @@ -683,7 +679,7 @@ msgstr "" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "" @@ -718,9 +714,9 @@ msgstr "" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "" @@ -815,7 +811,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "" @@ -828,7 +824,7 @@ msgstr "" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "" @@ -840,7 +836,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "" @@ -904,8 +900,8 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "" @@ -914,13 +910,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "" msgid "Destination stock item" msgstr "" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "" @@ -1073,7 +1097,6 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" @@ -1112,7 +1135,7 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "" @@ -1135,7 +1158,7 @@ msgstr "" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "" @@ -1146,7 +1169,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "" @@ -1189,26 +1212,6 @@ msgstr "" msgid "Are you sure you wish to cancel this build?" msgstr "" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "" @@ -1230,12 +1233,12 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "" @@ -1265,7 +1268,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "" @@ -1446,19 +1449,7 @@ msgstr "" msgid "Build output deleted" msgstr "" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "" @@ -1499,728 +1490,724 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "" @@ -2377,7 +2364,7 @@ msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "" @@ -2433,7 +2420,7 @@ msgstr "" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "" @@ -2450,7 +2437,7 @@ msgstr "" #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "" @@ -2570,7 +2557,7 @@ msgstr "" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "" @@ -2763,7 +2750,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "" @@ -2816,7 +2803,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "" @@ -3187,7 +3174,7 @@ msgstr "" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "" @@ -3549,7 +3536,7 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "" @@ -3965,7 +3952,7 @@ msgstr "" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "" @@ -4045,7 +4032,7 @@ msgstr "" msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "" @@ -4173,7 +4160,7 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" @@ -7129,15 +7148,15 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "" @@ -7165,8 +7184,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7213,11 +7232,11 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7229,27 +7248,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7261,11 +7280,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7334,7 +7353,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7494,7 +7513,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7538,7 +7557,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7546,7 +7565,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "" @@ -7554,165 +7573,177 @@ msgstr "" msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7943,12 +7974,12 @@ msgid "Select Label Template" msgstr "" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" @@ -7965,39 +7996,39 @@ msgstr "" msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8694,7 +8725,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "" @@ -9106,48 +9137,52 @@ msgstr "" msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "" @@ -9331,35 +9366,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "" -#: users/models.py:209 +#: users/models.py:210 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/th/LC_MESSAGES/django.po b/InvenTree/locale/th/LC_MESSAGES/django.po index c7ff4190b2..82cffcc5ec 100644 --- a/InvenTree/locale/th/LC_MESSAGES/django.po +++ b/InvenTree/locale/th/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 06:27\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:57\n" "Last-Translator: \n" "Language-Team: Thai\n" "Language: th_TH\n" @@ -34,8 +34,8 @@ msgstr "" msgid "Enter date" msgstr "" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "" @@ -157,8 +157,8 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "" msgid "Filename" msgstr "" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "" @@ -585,7 +585,7 @@ msgstr "" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "" msgid "Confirm deletion of build output" msgstr "" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "" @@ -660,7 +656,7 @@ msgstr "" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "" @@ -683,7 +679,7 @@ msgstr "" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "" @@ -718,9 +714,9 @@ msgstr "" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "" @@ -815,7 +811,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "" @@ -828,7 +824,7 @@ msgstr "" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "" @@ -840,7 +836,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "" @@ -904,8 +900,8 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "" @@ -914,13 +910,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "" msgid "Destination stock item" msgstr "" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "" @@ -1073,7 +1097,6 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" @@ -1112,7 +1135,7 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "" @@ -1135,7 +1158,7 @@ msgstr "" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "" @@ -1146,7 +1169,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "" @@ -1189,26 +1212,6 @@ msgstr "" msgid "Are you sure you wish to cancel this build?" msgstr "" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "" @@ -1230,12 +1233,12 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "" @@ -1265,7 +1268,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "" @@ -1446,19 +1449,7 @@ msgstr "" msgid "Build output deleted" msgstr "" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "" @@ -1499,728 +1490,724 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "" @@ -2377,7 +2364,7 @@ msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "" @@ -2433,7 +2420,7 @@ msgstr "" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "" @@ -2450,7 +2437,7 @@ msgstr "" #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "" @@ -2570,7 +2557,7 @@ msgstr "" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "" @@ -2763,7 +2750,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "" @@ -2816,7 +2803,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "" @@ -3187,7 +3174,7 @@ msgstr "" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "" @@ -3549,7 +3536,7 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "" @@ -3965,7 +3952,7 @@ msgstr "" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "" @@ -4045,7 +4032,7 @@ msgstr "" msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "" @@ -4173,7 +4160,7 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" @@ -7129,15 +7148,15 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "" @@ -7165,8 +7184,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7213,11 +7232,11 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7229,27 +7248,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7261,11 +7280,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7334,7 +7353,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7494,7 +7513,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7538,7 +7557,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7546,7 +7565,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "" @@ -7554,165 +7573,177 @@ msgstr "" msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7943,12 +7974,12 @@ msgid "Select Label Template" msgstr "" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" @@ -7965,39 +7996,39 @@ msgstr "" msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8694,7 +8725,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "" @@ -9106,48 +9137,52 @@ msgstr "" msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "" @@ -9331,35 +9366,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "" -#: users/models.py:209 +#: users/models.py:210 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po index 3ae94e8bc1..ba5c2b4fa3 100644 --- a/InvenTree/locale/tr/LC_MESSAGES/django.po +++ b/InvenTree/locale/tr/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 06:27\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:58\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -34,8 +34,8 @@ msgstr "Eşleşen eylem bulunamadı" msgid "Enter date" msgstr "Tarih giriniz" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "Onay" @@ -157,8 +157,8 @@ msgstr "Yorum" msgid "File comment" msgstr "Dosya yorumu" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "Geçersiz seçim" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "Adı" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "Geçerli bir numara olmalı" msgid "Filename" msgstr "" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "Almanca" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "Yunanca" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "İngilizce" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "İspanyolca" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "Fransızca" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "İbranice" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "İtalyanca" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "Japonca" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "Korece" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "Flemenkçe" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "Norveççe" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "Polonyaca" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "Rusça" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "İsveççe" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "Tay dili" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "Türkçe" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "Çince" @@ -585,7 +585,7 @@ msgstr "" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "Yapım işi çıktısının oluşturulmasını onaylayın" msgid "Confirm deletion of build output" msgstr "Yapım işi çıktısının silinmesini onaylayın" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "Yapım işini tamamlandı olarak işaretle" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "İptali Onayla" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "Yapım işi iptalini onayla" @@ -660,7 +656,7 @@ msgstr "" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "Yapım İşi Emri" @@ -683,7 +679,7 @@ msgstr "Yapım İşi Emri Referansı" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "Referans" @@ -718,9 +714,9 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "Satış Emri Referansı" msgid "SalesOrder to which this build is allocated" msgstr "Bu yapım işinin tahsis edildiği satış emri" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "Kaynak Konum" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "Yapım işinin tamamlanması için hedef tarih. Bu tarihten sonra yapım işi gecikmiş olacak." #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "Tamamlama tarihi" @@ -815,7 +811,7 @@ msgstr "Tamamlama tarihi" msgid "completed by" msgstr "tamamlayan" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "Veren" @@ -828,7 +824,7 @@ msgstr "Bu yapım işi emrini veren kullanıcı" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "Sorumlu" @@ -840,7 +836,7 @@ msgstr "Bu yapım işi emrinden sorumlu kullanıcı" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "Harici Bağlantı" @@ -904,8 +900,8 @@ msgstr "Seri numaralı stok için miktar bir olmalı" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "Yapım İşi" @@ -914,13 +910,13 @@ msgstr "Yapım İşi" msgid "Build to allocate parts" msgstr "Yapım işi için tahsis edilen parçalar" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "Kurulduğu yer" msgid "Destination stock item" msgstr "Hedef stok kalemi" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "Durum" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "Gerekli stok tamamen tahsis edilemedi" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "Gerekli yapım işi miktarı tamamlanmadı" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "" @@ -1073,7 +1097,6 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "Tamamlanmış Yapım İşi" @@ -1112,7 +1135,7 @@ msgstr "Stok, yapım işi emri için tamamen tahsis edilemedi" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "Hedeflenen tarih" @@ -1135,7 +1158,7 @@ msgstr "Vadesi geçmiş" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "Tamamlandı" @@ -1146,7 +1169,7 @@ msgstr "Tamamlandı" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "Sipariş Emri" @@ -1189,26 +1212,6 @@ msgstr "Birden çok tek yapım işi çıktısı oluşturmak için seri numaralar msgid "Are you sure you wish to cancel this build?" msgstr "" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "Yapım işi emri tamamlandı" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "Yapım işi emri eksik" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "Eksik yapım işi çıktıları kaldı" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "Gerekli yapım işi miktarı tamamlanmadı" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "Gerekli stok tamamen tahsis edilemedi" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "Yapım İşi Detayları" @@ -1230,12 +1233,12 @@ msgstr "Hedef" msgid "Destination location not specified" msgstr "Hedef konumu belirtilmedi" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "Toplu" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "Oluşturuldu" @@ -1265,7 +1268,7 @@ msgstr "Alt Yapım İşi Emrileri" msgid "Allocate Stock to Build" msgstr "Yapım İşi için Stok Tahsis Et" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "Stok tahsisini kaldır" @@ -1446,19 +1449,7 @@ msgstr "Yapım işi çıktısı belirtilmeli" msgid "Build output deleted" msgstr "Yapım işi çıktısı silindi" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "Tamamlanmış Yapım İşi Emri" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "Yapım işi emri tamamlanamadı - eksik çıktılar kaldı" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "Tamamlanmış yapım işi emri" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "Yapım İşi Emrini Sil" @@ -1499,728 +1490,724 @@ msgstr "{name.title()} Dosya" msgid "Select {name} file to upload" msgstr "{name} dosyasını yüklemek için seçin" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "Bir tam sayı olmalı" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "Anahtar dizesi benzersiz olmalı" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Şirket adı" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "Ana URL" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "Varsayılan Para Birimi" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "Varsayılan para birimi" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "URL'den indir" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "Harici URL'den resim ve dosyaların indirilmesine izin ver" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Barkod Desteği" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "Barkod tarayıcı desteğini etkinleştir" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "DPN Regex" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "Parça DPN eşleştirmesi için Düzenli İfade Kalıbı (Regex)" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "Yinelenen DPN'ye İzin Ver" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "Birden çok parçanın aynı DPN'yi paylaşmasına izin ver" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "DPN Düzenlemeye İzin Ver" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "Parçayı düzenlerken DPN değiştirmeye izin ver" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "Kategori Paremetre Sablonu Kopyala" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "Parça oluştururken kategori parametre şablonlarını kopyala" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "Şablon" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "Parçaları varsayılan olan şablondur" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "Montaj" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "Parçalar varsayılan olarak başka bileşenlerden monte edilebilir" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "Bileşen" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "Parçalar varsayılan olarak alt bileşen olarak kullanılabilir" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "Satın Alınabilir" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "Parçalar varsayılan olarak satın alınabilir" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "Satılabilir" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "Parçalar varsayılan olarak satılabilir" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "Takip Edilebilir" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "Parçalar varsayılan olarak takip edilebilir" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Sanal" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "Parçalar varsayılan olarak sanaldır" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "Formlarda Fiyat Göster" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "İlgili parçaları göster" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "Hata Ayıklama Modu" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "Raporları hata ayıklama modunda üret (HTML çıktısı)" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "Sayfa Boyutu" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "PDF raporlar için varsayılan sayfa boyutu" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "Test Raporları" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "günler" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "Stok konumu ve ögeler üzerinde sahiplik kontrolünü etkinleştirin" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "Formlarda Miktarı Göster" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "Fiyat" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "Bu şirket için varsayılan para birimi" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "Temel Parça" @@ -2377,7 +2364,7 @@ msgstr "Parça seçin" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "" @@ -2433,7 +2420,7 @@ msgstr "Parametre değeri" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "" @@ -2450,7 +2437,7 @@ msgstr "" #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "Paketleme" @@ -2570,7 +2557,7 @@ msgstr "" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "Yeni Satış Emri" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "Atanan Stok" @@ -2763,7 +2750,7 @@ msgstr "Tedarikçi parçalarını sil" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "" @@ -2816,7 +2803,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "Tedarikçi Parçası" @@ -3187,7 +3174,7 @@ msgstr "" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "" @@ -3549,7 +3536,7 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "İşlemler" @@ -3965,7 +3952,7 @@ msgstr "" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "" @@ -4045,7 +4032,7 @@ msgstr "Bu parça dış tedarikçilerden satın alınabilir mi?" msgid "Can this part be sold to customers?" msgstr "Bu parça müşterilere satılabilir mi?" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "Parametre Şablonu" @@ -4173,7 +4160,7 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "Barkod işlemleri" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "Etiket Yazdır" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "Stok işlemleri" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "Son Seri Numarası" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "Yeni parça çeşidi oluştur" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "Kurulu stok kalemlerinin kaldırılmasını onayla" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "Konuma Tara" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "Yazdırma işlemleri" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "Stok ayarlama işlemleri" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "Stoku seri numarala" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "Çeşide çevir" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "Bu stok kaleminin süresi %(item.expiry_date)s tarihinde sona erdi" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "Bu stok kaleminin süresi %(item.expiry_date)s tarihinde sona erecek" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "Stok kalemi tüm gerekli testleri geçmedi" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "Bu stok kalemi seri numaları - Benzersiz bir seri numarasına sahip ve miktarı ayarlanamaz." -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "Konum ayarlanmadı" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "Kategori parametre şablonu bulunamadı" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "Şablonu Düzenle" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "Şablonu Sil" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "Parça parametre şablonu bulunamadı" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "InvenTree Sürüm Bilgisi" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "Kapat" @@ -7129,15 +7148,15 @@ msgstr "" msgid "Add Attachment" msgstr "Dosya Ekle" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "" @@ -7165,8 +7184,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Mevcut" @@ -7213,11 +7232,11 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "Cevap Yok" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7229,27 +7248,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "Bu fonksiyona erişmek için gerekli izinlere sahip değilsiniz" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7261,11 +7280,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7334,7 +7353,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7494,7 +7513,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7538,7 +7557,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7546,7 +7565,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "Gerekli Parça" @@ -7554,165 +7573,177 @@ msgstr "Gerekli Parça" msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "Yapım işi emri eksik" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "Tamamlanmış Yapım İşi Emri" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "Stok tahsisini düzenle" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "Stok tahsisini sil" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "Parçaları Seçin" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "Stok tahsisini onayla" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7943,12 +7974,12 @@ msgid "Select Label Template" msgstr "Etiket Şablonu Seç" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" @@ -7965,39 +7996,39 @@ msgstr "" msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8694,7 +8725,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "" @@ -9106,48 +9137,52 @@ msgstr "" msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "" @@ -9331,35 +9366,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "" -#: users/models.py:209 +#: users/models.py:210 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po index b2a86bbe7f..4b75e64c4e 100644 --- a/InvenTree/locale/vi/LC_MESSAGES/django.po +++ b/InvenTree/locale/vi/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 06:27\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:57\n" "Last-Translator: \n" "Language-Team: Vietnamese\n" "Language: vi_VN\n" @@ -34,8 +34,8 @@ msgstr "" msgid "Enter date" msgstr "" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "" @@ -157,8 +157,8 @@ msgstr "Bình luận" msgid "File comment" msgstr "" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "" msgid "Filename" msgstr "Tên tập tin" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "" @@ -585,7 +585,7 @@ msgstr "" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "" msgid "Confirm deletion of build output" msgstr "" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "" @@ -660,7 +656,7 @@ msgstr "" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "Tạo đơn hàng" @@ -683,7 +679,7 @@ msgstr "" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "" @@ -718,9 +714,9 @@ msgstr "" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "Ngày hoàn thành" @@ -815,7 +811,7 @@ msgstr "Ngày hoàn thành" msgid "completed by" msgstr "" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "" @@ -828,7 +824,7 @@ msgstr "" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "" @@ -840,7 +836,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "" @@ -904,8 +900,8 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "" @@ -914,13 +910,13 @@ msgstr "" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "" msgid "Destination stock item" msgstr "" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "Trạng thái" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "" @@ -1073,7 +1097,6 @@ msgstr "" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "" @@ -1112,7 +1135,7 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "" @@ -1135,7 +1158,7 @@ msgstr "" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "Đã hoàn thành" @@ -1146,7 +1169,7 @@ msgstr "Đã hoàn thành" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "" @@ -1189,26 +1212,6 @@ msgstr "" msgid "Are you sure you wish to cancel this build?" msgstr "" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "" @@ -1230,12 +1233,12 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "" @@ -1265,7 +1268,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "" @@ -1446,19 +1449,7 @@ msgstr "" msgid "Build output deleted" msgstr "" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "" @@ -1499,728 +1490,724 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "Hiển thị nguyên liệu mới nhất" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "Hiển thị nguyên liệu mới nhất trên trang chủ" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "" @@ -2377,7 +2364,7 @@ msgstr "" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "" @@ -2433,7 +2420,7 @@ msgstr "" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "" @@ -2450,7 +2437,7 @@ msgstr "" #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "" @@ -2570,7 +2557,7 @@ msgstr "" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "" @@ -2763,7 +2750,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "" @@ -2816,7 +2803,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "" @@ -3187,7 +3174,7 @@ msgstr "" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "Giá mua" @@ -3549,7 +3536,7 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "" @@ -3965,7 +3952,7 @@ msgstr "" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "" @@ -4045,7 +4032,7 @@ msgstr "" msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "" @@ -4173,7 +4160,7 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "Số seri mới nhất" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "" msgid "Report Settings" msgstr "" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "Chỉnh sửa cài đặt toàn cục" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "Chỉnh sửa cài đặt người dùng" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" @@ -7129,15 +7148,15 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "" @@ -7165,8 +7184,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7213,11 +7232,11 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7229,27 +7248,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7261,11 +7280,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7334,7 +7353,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7494,7 +7513,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7538,7 +7557,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7546,7 +7565,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "" @@ -7554,165 +7573,177 @@ msgstr "" msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7943,12 +7974,12 @@ msgid "Select Label Template" msgstr "" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" @@ -7965,39 +7996,39 @@ msgstr "" msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8694,7 +8725,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "" @@ -9106,48 +9137,52 @@ msgstr "" msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "" @@ -9331,35 +9366,35 @@ msgstr "" msgid "Important dates" msgstr "" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "" -#: users/models.py:209 +#: users/models.py:210 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po index 5966a4fe21..13e69c27a0 100644 --- a/InvenTree/locale/zh/LC_MESSAGES/django.po +++ b/InvenTree/locale/zh/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-31 06:22+0000\n" -"PO-Revision-Date: 2021-12-31 06:27\n" +"POT-Creation-Date: 2022-01-10 03:54+0000\n" +"PO-Revision-Date: 2022-01-10 03:57\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -34,8 +34,8 @@ msgstr "未找到指定操作" msgid "Enter date" msgstr "输入日期" -#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93 -#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57 +#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 order/forms.py:24 +#: order/forms.py:35 order/forms.py:46 order/forms.py:57 #: templates/account/email_confirm.html:20 templates/js/translated/forms.js:595 msgid "Confirm" msgstr "确认" @@ -157,8 +157,8 @@ msgstr "注释" msgid "File comment" msgstr "文件注释" -#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219 -#: common/models.py:1220 part/models.py:2258 part/models.py:2278 +#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213 +#: common/models.py:1214 part/models.py:2258 part/models.py:2278 #: report/templates/report/inventree_test_report_base.html:96 #: templates/js/translated/stock.js:2534 msgid "User" @@ -199,12 +199,12 @@ msgstr "选择无效" #: InvenTree/models.py:277 InvenTree/models.py:278 company/models.py:415 #: label/models.py:112 part/models.py:772 part/models.py:2442 -#: plugin/models.py:39 report/models.py:181 +#: plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:47 #: templates/InvenTree/settings/plugin.html:124 #: templates/InvenTree/settings/plugin_settings.html:23 -#: templates/InvenTree/settings/settings.html:268 +#: templates/InvenTree/settings/settings.html:279 #: templates/js/translated/company.js:641 templates/js/translated/part.js:561 #: templates/js/translated/part.js:700 templates/js/translated/part.js:1624 #: templates/js/translated/stock.js:2327 @@ -224,7 +224,7 @@ msgstr "名称" #: stock/templates/stock/location.html:93 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540 -#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1682 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:836 #: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258 @@ -252,83 +252,83 @@ msgstr "必须是有效数字" msgid "Filename" msgstr "文件名" -#: InvenTree/settings.py:698 +#: InvenTree/settings.py:663 msgid "German" msgstr "德语" -#: InvenTree/settings.py:699 +#: InvenTree/settings.py:664 msgid "Greek" msgstr "希腊语" -#: InvenTree/settings.py:700 +#: InvenTree/settings.py:665 msgid "English" msgstr "英语" -#: InvenTree/settings.py:701 +#: InvenTree/settings.py:666 msgid "Spanish" msgstr "西班牙语" -#: InvenTree/settings.py:702 +#: InvenTree/settings.py:667 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:703 +#: InvenTree/settings.py:668 msgid "French" msgstr "法语" -#: InvenTree/settings.py:704 +#: InvenTree/settings.py:669 msgid "Hebrew" msgstr "希伯来语" -#: InvenTree/settings.py:705 +#: InvenTree/settings.py:670 msgid "Italian" msgstr "意大利语" -#: InvenTree/settings.py:706 +#: InvenTree/settings.py:671 msgid "Japanese" msgstr "日语" -#: InvenTree/settings.py:707 +#: InvenTree/settings.py:672 msgid "Korean" msgstr "韩语" -#: InvenTree/settings.py:708 +#: InvenTree/settings.py:673 msgid "Dutch" msgstr "荷兰语" -#: InvenTree/settings.py:709 +#: InvenTree/settings.py:674 msgid "Norwegian" msgstr "挪威语" -#: InvenTree/settings.py:710 +#: InvenTree/settings.py:675 msgid "Polish" msgstr "波兰语" -#: InvenTree/settings.py:711 +#: InvenTree/settings.py:676 msgid "Portugese" msgstr "" -#: InvenTree/settings.py:712 +#: InvenTree/settings.py:677 msgid "Russian" msgstr "俄语" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:678 msgid "Swedish" msgstr "瑞典语" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:679 msgid "Thai" msgstr "泰语" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:680 msgid "Turkish" msgstr "土耳其语" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:681 msgid "Vietnamese" msgstr "越南语" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:682 msgid "Chinese" msgstr "中文(简体)" @@ -585,7 +585,7 @@ msgstr "" #: build/forms.py:36 build/models.py:1286 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1259 +#: build/templates/build/detail.html:35 common/models.py:1253 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:796 order/models.py:1207 order/serializers.py:810 #: order/templates/order/order_wizard/match_parts.html:30 @@ -600,13 +600,13 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:81 #: report/templates/report/inventree_test_report_base.html:139 #: stock/forms.py:142 stock/serializers.py:293 -#: stock/templates/stock/item_base.html:180 -#: stock/templates/stock/item_base.html:261 -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:181 +#: stock/templates/stock/item_base.html:262 +#: stock/templates/stock/item_base.html:270 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555 -#: templates/js/translated/build.js:240 templates/js/translated/build.js:440 -#: templates/js/translated/build.js:634 templates/js/translated/build.js:644 -#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367 +#: templates/js/translated/build.js:295 templates/js/translated/build.js:495 +#: templates/js/translated/build.js:689 templates/js/translated/build.js:699 +#: templates/js/translated/build.js:1075 templates/js/translated/build.js:1422 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1056 #: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859 @@ -641,15 +641,11 @@ msgstr "确认创建生产产出" msgid "Confirm deletion of build output" msgstr "确认删除生产产出" -#: build/forms.py:94 -msgid "Mark build as complete" -msgstr "标记生产已完成" - -#: build/forms.py:107 +#: build/forms.py:89 msgid "Confirm cancel" msgstr "确认取消" -#: build/forms.py:107 build/views.py:65 +#: build/forms.py:89 build/views.py:65 msgid "Confirm build cancellation" msgstr "确认生产取消" @@ -660,7 +656,7 @@ msgstr "上级生产选项无效" #: build/models.py:137 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:402 +#: templates/js/translated/build.js:457 msgid "Build Order" msgstr "生产订单" @@ -683,7 +679,7 @@ msgstr "相关生产订单" #: part/templates/part/bom_upload/match_parts.html:30 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124 +#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1179 #: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144 msgid "Reference" msgstr "引用" @@ -718,9 +714,9 @@ msgstr "此次生产匹配的订单" #: templates/email/build_order_required_stock.html:17 #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326 -#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625 -#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364 -#: templates/js/translated/build.js:1632 templates/js/translated/company.js:492 +#: templates/js/translated/bom.js:505 templates/js/translated/build.js:680 +#: templates/js/translated/build.js:1048 templates/js/translated/build.js:1419 +#: templates/js/translated/build.js:1687 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:586 templates/js/translated/order.js:1004 #: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933 @@ -744,7 +740,7 @@ msgstr "相关销售订单" msgid "SalesOrder to which this build is allocated" msgstr "此次生产匹配的销售订单" -#: build/models.py:247 templates/js/translated/build.js:1352 +#: build/models.py:247 templates/js/translated/build.js:1407 #: templates/js/translated/order.js:1564 msgid "Source Location" msgstr "来源地点" @@ -807,7 +803,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "生产完成的目标日期。生产将在此日期之后逾期。" #: build/models.py:300 order/models.py:252 -#: templates/js/translated/build.js:1703 +#: templates/js/translated/build.js:1758 msgid "Completion Date" msgstr "完成日期:" @@ -815,7 +811,7 @@ msgstr "完成日期:" msgid "completed by" msgstr "完成人" -#: build/models.py:314 templates/js/translated/build.js:1674 +#: build/models.py:314 templates/js/translated/build.js:1729 msgid "Issued by" msgstr "发布者" @@ -828,7 +824,7 @@ msgstr "发布此生产订单的用户" #: order/templates/order/order_base.html:170 #: order/templates/order/sales_order_base.html:182 part/models.py:971 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:1686 templates/js/translated/order.js:864 +#: templates/js/translated/build.js:1741 templates/js/translated/order.js:864 msgid "Responsible" msgstr "责任人" @@ -840,7 +836,7 @@ msgstr "负责此生产订单的用户" #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 #: part/templates/part/part_base.html:354 stock/models.py:525 -#: stock/templates/stock/item_base.html:372 +#: stock/templates/stock/item_base.html:373 msgid "External Link" msgstr "外部链接" @@ -904,8 +900,8 @@ msgstr "" msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1256 stock/templates/stock/item_base.html:344 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605 +#: build/models.py:1256 stock/templates/stock/item_base.html:345 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1660 #: templates/navbar.html:35 msgid "Build" msgstr "生产" @@ -914,13 +910,13 @@ msgstr "生产" msgid "Build to allocate parts" msgstr "" -#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690 +#: build/models.py:1273 build/serializers.py:388 order/serializers.py:690 #: order/serializers.py:708 stock/serializers.py:577 stock/serializers.py:695 -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:22 -#: stock/templates/stock/item_base.html:366 -#: templates/js/translated/build.js:413 templates/js/translated/build.js:418 -#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748 +#: stock/templates/stock/item_base.html:9 +#: stock/templates/stock/item_base.html:23 +#: stock/templates/stock/item_base.html:367 +#: templates/js/translated/build.js:468 templates/js/translated/build.js:473 +#: templates/js/translated/build.js:1421 templates/js/translated/build.js:1803 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1577 #: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837 #: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030 @@ -945,7 +941,7 @@ msgstr "安装到" msgid "Destination stock item" msgstr "" -#: build/serializers.py:137 build/serializers.py:363 +#: build/serializers.py:137 build/serializers.py:417 msgid "Build Output" msgstr "" @@ -967,10 +963,10 @@ msgstr "" #: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294 #: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:730 -#: stock/serializers.py:971 stock/templates/stock/item_base.html:312 +#: stock/serializers.py:971 stock/templates/stock/item_base.html:313 #: templates/js/translated/barcode.js:384 -#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425 -#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508 +#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:480 +#: templates/js/translated/build.js:1087 templates/js/translated/order.js:508 #: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955 #: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044 #: templates/js/translated/part.js:179 templates/js/translated/stock.js:556 @@ -985,8 +981,8 @@ msgstr "" #: build/serializers.py:197 build/templates/build/build_base.html:137 #: build/templates/build/detail.html:63 order/models.py:552 -#: order/serializers.py:247 stock/templates/stock/item_base.html:186 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661 +#: order/serializers.py:247 stock/templates/stock/item_base.html:187 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1716 #: templates/js/translated/order.js:591 templates/js/translated/order.js:840 #: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651 #: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637 @@ -997,46 +993,74 @@ msgstr "状态" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:259 build/serializers.py:308 part/models.py:2753 +#: build/serializers.py:249 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:250 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:260 templates/js/translated/build.js:149 +msgid "Required stock has not been fully allocated" +msgstr "所需库存尚未完全分配" + +#: build/serializers.py:265 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:266 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:276 templates/js/translated/build.js:153 +msgid "Required build quantity has not been completed" +msgstr "所需生产数量尚未完成" + +#: build/serializers.py:285 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:313 build/serializers.py:362 part/models.py:2753 #: part/models.py:2912 msgid "BOM Item" msgstr "" -#: build/serializers.py:269 +#: build/serializers.py:323 msgid "Build output" msgstr "" -#: build/serializers.py:278 +#: build/serializers.py:332 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:325 +#: build/serializers.py:379 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:340 stock/serializers.py:584 +#: build/serializers.py:394 stock/serializers.py:584 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:354 order/models.py:277 order/serializers.py:240 +#: build/serializers.py:408 order/models.py:277 order/serializers.py:240 #: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" -#: build/serializers.py:396 order/serializers.py:741 +#: build/serializers.py:450 order/serializers.py:741 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:402 +#: build/serializers.py:456 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:409 +#: build/serializers.py:463 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:437 order/serializers.py:984 +#: build/serializers.py:491 order/serializers.py:984 msgid "Allocation items must be provided" msgstr "" @@ -1073,7 +1097,6 @@ msgstr "删除生产" #: build/templates/build/build_base.html:64 #: build/templates/build/build_base.html:65 -#: build/templates/build/build_base.html:231 msgid "Complete Build" msgstr "生产完成" @@ -1112,7 +1135,7 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:1698 templates/js/translated/order.js:854 +#: templates/js/translated/build.js:1753 templates/js/translated/order.js:854 #: templates/js/translated/order.js:1276 msgid "Target Date" msgstr "预计日期" @@ -1135,7 +1158,7 @@ msgstr "逾期" #: build/templates/build/build_base.html:158 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1647 +#: templates/js/translated/build.js:1702 #: templates/js/translated/table_filters.js:370 msgid "Completed" msgstr "已完成" @@ -1146,7 +1169,7 @@ msgstr "已完成" #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 -#: stock/templates/stock/item_base.html:306 +#: stock/templates/stock/item_base.html:307 #: templates/js/translated/order.js:1218 msgid "Sales Order" msgstr "销售订单" @@ -1189,26 +1212,6 @@ msgstr "" msgid "Are you sure you wish to cancel this build?" msgstr "是否确定取消生产?" -#: build/templates/build/complete.html:8 -msgid "Build Order is complete" -msgstr "生产订单已完成" - -#: build/templates/build/complete.html:12 -msgid "Build Order is incomplete" -msgstr "生产订单未完成" - -#: build/templates/build/complete.html:15 -msgid "Incompleted build outputs remain" -msgstr "" - -#: build/templates/build/complete.html:18 -msgid "Required build quantity has not been completed" -msgstr "所需生产数量尚未完成" - -#: build/templates/build/complete.html:21 -msgid "Required stock has not been fully allocated" -msgstr "所需库存尚未完全分配" - #: build/templates/build/detail.html:16 msgid "Build Details" msgstr "生产详情" @@ -1230,12 +1233,12 @@ msgstr "" msgid "Destination location not specified" msgstr "" -#: build/templates/build/detail.html:74 templates/js/translated/build.js:652 +#: build/templates/build/detail.html:74 templates/js/translated/build.js:707 msgid "Allocated Parts" msgstr "" #: build/templates/build/detail.html:81 -#: stock/templates/stock/item_base.html:330 +#: stock/templates/stock/item_base.html:331 #: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 @@ -1245,7 +1248,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:1724 msgid "Created" msgstr "已创建" @@ -1265,7 +1268,7 @@ msgstr "子生产订单" msgid "Allocate Stock to Build" msgstr "为生产分配库存" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1262 msgid "Unallocate stock" msgstr "未分配库存" @@ -1446,19 +1449,7 @@ msgstr "必须指定生成产出" msgid "Build output deleted" msgstr "生产产出已删除" -#: build/views.py:261 -msgid "Complete Build Order" -msgstr "生产订单完成" - -#: build/views.py:267 -msgid "Build order cannot be completed - incomplete outputs remain" -msgstr "" - -#: build/views.py:278 -msgid "Completed build order" -msgstr "已完成的生产订单" - -#: build/views.py:319 +#: build/views.py:286 msgid "Delete Build Order" msgstr "删除生产订单" @@ -1499,728 +1490,724 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:340 common/models.py:1004 common/models.py:1212 +#: common/models.py:344 common/models.py:998 common/models.py:1206 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:342 +#: common/models.py:346 msgid "Settings value" msgstr "" -#: common/models.py:377 -msgid "Must be an integer value" -msgstr "" - -#: common/models.py:382 +#: common/models.py:380 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:405 +#: common/models.py:400 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:416 +#: common/models.py:411 msgid "Value must be an integer value" msgstr "" -#: common/models.py:439 +#: common/models.py:434 msgid "Key string must be unique" msgstr "" -#: common/models.py:559 +#: common/models.py:553 msgid "No group" msgstr "" -#: common/models.py:601 +#: common/models.py:595 msgid "Restart required" msgstr "" -#: common/models.py:602 +#: common/models.py:596 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:609 +#: common/models.py:603 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:611 +#: common/models.py:605 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:615 +#: common/models.py:609 msgid "Use instance name" msgstr "" -#: common/models.py:616 +#: common/models.py:610 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:622 company/models.py:100 company/models.py:101 +#: common/models.py:616 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "公司名称" -#: common/models.py:623 +#: common/models.py:617 msgid "Internal company name" msgstr "内部公司名称" -#: common/models.py:628 +#: common/models.py:622 msgid "Base URL" msgstr "" -#: common/models.py:629 +#: common/models.py:623 msgid "Base URL for server instance" msgstr "" -#: common/models.py:635 +#: common/models.py:629 msgid "Default Currency" msgstr "" -#: common/models.py:636 +#: common/models.py:630 msgid "Default currency" msgstr "" -#: common/models.py:642 +#: common/models.py:636 msgid "Download from URL" msgstr "" -#: common/models.py:643 +#: common/models.py:637 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:649 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:643 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:650 +#: common/models.py:644 msgid "Enable barcode scanner support" msgstr "启用条形码扫描支持" -#: common/models.py:656 +#: common/models.py:650 msgid "IPN Regex" msgstr "" -#: common/models.py:657 +#: common/models.py:651 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:661 +#: common/models.py:655 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:662 +#: common/models.py:656 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:668 +#: common/models.py:662 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:669 +#: common/models.py:663 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:675 +#: common/models.py:669 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:676 +#: common/models.py:670 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:682 +#: common/models.py:676 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:683 +#: common/models.py:677 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:689 +#: common/models.py:683 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:690 +#: common/models.py:684 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:696 +#: common/models.py:690 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:697 +#: common/models.py:691 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:703 part/models.py:2482 report/models.py:187 +#: common/models.py:697 part/models.py:2482 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:422 msgid "Template" msgstr "模板" -#: common/models.py:704 +#: common/models.py:698 msgid "Parts are templates by default" msgstr "" -#: common/models.py:710 part/models.py:919 templates/js/translated/bom.js:1068 +#: common/models.py:704 part/models.py:919 templates/js/translated/bom.js:1068 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:434 msgid "Assembly" msgstr "组装" -#: common/models.py:711 +#: common/models.py:705 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:717 part/models.py:925 +#: common/models.py:711 part/models.py:925 #: templates/js/translated/table_filters.js:438 msgid "Component" msgstr "组件" -#: common/models.py:718 +#: common/models.py:712 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:724 part/models.py:936 +#: common/models.py:718 part/models.py:936 msgid "Purchaseable" msgstr "可购买" -#: common/models.py:725 +#: common/models.py:719 msgid "Parts are purchaseable by default" msgstr "商品默认可购买" -#: common/models.py:731 part/models.py:941 +#: common/models.py:725 part/models.py:941 #: templates/js/translated/table_filters.js:446 msgid "Salable" msgstr "可销售" -#: common/models.py:732 +#: common/models.py:726 msgid "Parts are salable by default" msgstr "商品默认可销售" -#: common/models.py:738 part/models.py:931 +#: common/models.py:732 part/models.py:931 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:450 msgid "Trackable" msgstr "可追踪" -#: common/models.py:739 +#: common/models.py:733 msgid "Parts are trackable by default" msgstr "商品默认可跟踪" -#: common/models.py:745 part/models.py:951 +#: common/models.py:739 part/models.py:951 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "虚拟" -#: common/models.py:746 +#: common/models.py:740 msgid "Parts are virtual by default" msgstr "商品默认是虚拟的" -#: common/models.py:752 +#: common/models.py:746 msgid "Show Import in Views" msgstr "视图中显示导入" -#: common/models.py:753 +#: common/models.py:747 msgid "Display the import wizard in some part views" msgstr "在一些商品视图中显示导入向导" -#: common/models.py:759 +#: common/models.py:753 msgid "Show Price in Forms" msgstr "在表格中显示价格" -#: common/models.py:760 +#: common/models.py:754 msgid "Display part price in some forms" msgstr "以某些表格显示商品价格" -#: common/models.py:771 +#: common/models.py:765 msgid "Show Price in BOM" msgstr "" -#: common/models.py:772 +#: common/models.py:766 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:778 +#: common/models.py:772 msgid "Show related parts" msgstr "显示相关商品" -#: common/models.py:779 +#: common/models.py:773 msgid "Display related parts for a part" msgstr "" -#: common/models.py:785 +#: common/models.py:779 msgid "Create initial stock" msgstr "创建初始库存" -#: common/models.py:786 +#: common/models.py:780 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:792 +#: common/models.py:786 msgid "Internal Prices" msgstr "内部价格" -#: common/models.py:793 +#: common/models.py:787 msgid "Enable internal prices for parts" msgstr "启用内部商品价格" -#: common/models.py:799 +#: common/models.py:793 msgid "Internal Price as BOM-Price" msgstr "内部价格为BOM价格" -#: common/models.py:800 +#: common/models.py:794 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "在 BOM价格计算中使用内部价格(如设置)" -#: common/models.py:806 +#: common/models.py:800 msgid "Part Name Display Format" msgstr "" -#: common/models.py:807 +#: common/models.py:801 msgid "Format to display the part name" msgstr "" -#: common/models.py:814 +#: common/models.py:808 msgid "Enable Reports" msgstr "" -#: common/models.py:815 +#: common/models.py:809 msgid "Enable generation of reports" msgstr "" -#: common/models.py:821 templates/stats.html:25 +#: common/models.py:815 templates/stats.html:25 msgid "Debug Mode" msgstr "调试模式" -#: common/models.py:822 +#: common/models.py:816 msgid "Generate reports in debug mode (HTML output)" msgstr "在调试模式生成报告(HTML输出)" -#: common/models.py:828 +#: common/models.py:822 msgid "Page Size" msgstr "页面大小" -#: common/models.py:829 +#: common/models.py:823 msgid "Default page size for PDF reports" msgstr "PDF 报表默认页面大小" -#: common/models.py:839 +#: common/models.py:833 msgid "Test Reports" msgstr "测试报表" -#: common/models.py:840 +#: common/models.py:834 msgid "Enable generation of test reports" msgstr "启用生成测试报表" -#: common/models.py:846 +#: common/models.py:840 msgid "Stock Expiry" msgstr "库存到期" -#: common/models.py:847 +#: common/models.py:841 msgid "Enable stock expiry functionality" msgstr "启用库存到期功能" -#: common/models.py:853 +#: common/models.py:847 msgid "Sell Expired Stock" msgstr "销售过期库存" -#: common/models.py:854 +#: common/models.py:848 msgid "Allow sale of expired stock" msgstr "允许销售过期库存" -#: common/models.py:860 +#: common/models.py:854 msgid "Stock Stale Time" msgstr "" -#: common/models.py:861 +#: common/models.py:855 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:863 +#: common/models.py:857 msgid "days" msgstr "天" -#: common/models.py:868 +#: common/models.py:862 msgid "Build Expired Stock" msgstr "" -#: common/models.py:869 +#: common/models.py:863 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:875 +#: common/models.py:869 msgid "Stock Ownership Control" msgstr "库存所有权控制" -#: common/models.py:876 +#: common/models.py:870 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:882 +#: common/models.py:876 msgid "Group by Part" msgstr "按商品分组" -#: common/models.py:883 +#: common/models.py:877 msgid "Group stock items by part reference in table views" msgstr "" -#: common/models.py:889 +#: common/models.py:883 msgid "Build Order Reference Prefix" msgstr "生产订单参考前缀" -#: common/models.py:890 +#: common/models.py:884 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:895 +#: common/models.py:889 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:896 +#: common/models.py:890 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:900 +#: common/models.py:894 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:901 +#: common/models.py:895 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:906 +#: common/models.py:900 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:907 +#: common/models.py:901 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:913 +#: common/models.py:907 msgid "Enable password forgot" msgstr "" -#: common/models.py:914 +#: common/models.py:908 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:919 +#: common/models.py:913 msgid "Enable registration" msgstr "" -#: common/models.py:920 +#: common/models.py:914 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:925 +#: common/models.py:919 msgid "Enable SSO" msgstr "" -#: common/models.py:926 +#: common/models.py:920 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:931 +#: common/models.py:925 msgid "Email required" msgstr "" -#: common/models.py:932 +#: common/models.py:926 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:937 +#: common/models.py:931 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:938 +#: common/models.py:932 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:943 +#: common/models.py:937 msgid "Mail twice" msgstr "" -#: common/models.py:944 +#: common/models.py:938 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:949 +#: common/models.py:943 msgid "Password twice" msgstr "" -#: common/models.py:950 +#: common/models.py:944 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:955 +#: common/models.py:949 msgid "Group on signup" msgstr "" -#: common/models.py:956 +#: common/models.py:950 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:961 +#: common/models.py:955 msgid "Enforce MFA" msgstr "" -#: common/models.py:962 +#: common/models.py:956 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:967 +#: common/models.py:961 msgid "Enable URL integration" msgstr "" -#: common/models.py:968 +#: common/models.py:962 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:974 +#: common/models.py:968 msgid "Enable navigation integration" msgstr "" -#: common/models.py:975 +#: common/models.py:969 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:981 -msgid "Enable global setting integration" -msgstr "" - -#: common/models.py:982 -msgid "Enable plugins to integrate into inventree global settings" -msgstr "" - -#: common/models.py:988 +#: common/models.py:975 msgid "Enable app integration" msgstr "" -#: common/models.py:989 +#: common/models.py:976 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1035 +#: common/models.py:982 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:983 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1029 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1036 +#: common/models.py:1030 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1041 +#: common/models.py:1035 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1042 +#: common/models.py:1036 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1047 +#: common/models.py:1041 msgid "Show latest parts" msgstr "显示最近商品" -#: common/models.py:1048 +#: common/models.py:1042 msgid "Show latest parts on the homepage" msgstr "在主页上显示最近商品" -#: common/models.py:1053 +#: common/models.py:1047 msgid "Recent Part Count" msgstr "" -#: common/models.py:1054 +#: common/models.py:1048 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1060 +#: common/models.py:1054 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1061 +#: common/models.py:1055 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1066 +#: common/models.py:1060 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1067 +#: common/models.py:1061 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1072 +#: common/models.py:1066 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1073 +#: common/models.py:1067 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1078 +#: common/models.py:1072 msgid "Show low stock" msgstr "" -#: common/models.py:1079 +#: common/models.py:1073 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1078 msgid "Show depleted stock" msgstr "" -#: common/models.py:1085 +#: common/models.py:1079 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1084 msgid "Show needed stock" msgstr "" -#: common/models.py:1091 +#: common/models.py:1085 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1090 msgid "Show expired stock" msgstr "" -#: common/models.py:1097 +#: common/models.py:1091 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1102 +#: common/models.py:1096 msgid "Show stale stock" msgstr "" -#: common/models.py:1103 +#: common/models.py:1097 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1108 +#: common/models.py:1102 msgid "Show pending builds" msgstr "" -#: common/models.py:1109 +#: common/models.py:1103 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1114 +#: common/models.py:1108 msgid "Show overdue builds" msgstr "显示逾期生产" -#: common/models.py:1115 +#: common/models.py:1109 msgid "Show overdue builds on the homepage" msgstr "在主页上显示逾期的生产" -#: common/models.py:1120 +#: common/models.py:1114 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1121 +#: common/models.py:1115 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1126 +#: common/models.py:1120 msgid "Show overdue POs" msgstr "" -#: common/models.py:1127 +#: common/models.py:1121 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1132 +#: common/models.py:1126 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1133 +#: common/models.py:1127 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1138 +#: common/models.py:1132 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1139 +#: common/models.py:1133 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1139 msgid "Inline label display" msgstr "内嵌标签显示" -#: common/models.py:1146 +#: common/models.py:1140 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "在浏览器中显示 PDF 标签,而不是以文件形式下载" -#: common/models.py:1152 +#: common/models.py:1146 msgid "Inline report display" msgstr "" -#: common/models.py:1153 +#: common/models.py:1147 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "在浏览器中显示 PDF 报告,而不是以文件形式下载" -#: common/models.py:1159 +#: common/models.py:1153 msgid "Search Preview Results" msgstr "搜索预览结果" -#: common/models.py:1160 +#: common/models.py:1154 msgid "Number of results to show in search preview window" msgstr "搜索预览窗口中显示的结果数" -#: common/models.py:1166 +#: common/models.py:1160 msgid "Search Show Stock" msgstr "" -#: common/models.py:1167 +#: common/models.py:1161 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1173 +#: common/models.py:1167 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1174 +#: common/models.py:1168 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1180 +#: common/models.py:1174 msgid "Show Quantity in Forms" msgstr "在表格中显示数量" -#: common/models.py:1181 +#: common/models.py:1175 msgid "Display available part quantity in some forms" msgstr "在某些表格中显示可用的商品数量" -#: common/models.py:1187 +#: common/models.py:1181 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1188 +#: common/models.py:1182 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1194 +#: common/models.py:1188 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1195 +#: common/models.py:1189 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1260 company/forms.py:43 +#: common/models.py:1254 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1267 company/serializers.py:264 +#: common/models.py:1261 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 #: templates/js/translated/part.js:909 templates/js/translated/part.js:1860 msgid "Price" msgstr "价格" -#: common/models.py:1268 +#: common/models.py:1262 msgid "Unit price at specified quantity" msgstr "" @@ -2366,7 +2353,7 @@ msgid "Default currency used for this company" msgstr "该公司使用的默认货币" #: company/models.py:320 company/models.py:535 stock/models.py:469 -#: stock/templates/stock/item_base.html:141 +#: stock/templates/stock/item_base.html:142 msgid "Base Part" msgstr "" @@ -2377,7 +2364,7 @@ msgstr "选择商品" #: company/models.py:335 company/templates/company/company_base.html:73 #: company/templates/company/manufacturer_part.html:91 #: company/templates/company/supplier_part.html:97 -#: stock/templates/stock/item_base.html:379 +#: stock/templates/stock/item_base.html:380 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 #: templates/js/translated/company.js:800 templates/js/translated/part.js:234 @@ -2412,7 +2399,7 @@ msgstr "制造商商品描述" #: company/models.py:409 company/models.py:558 #: company/templates/company/manufacturer_part.html:6 #: company/templates/company/manufacturer_part.html:23 -#: stock/templates/stock/item_base.html:389 +#: stock/templates/stock/item_base.html:390 msgid "Manufacturer Part" msgstr "制造商商品" @@ -2433,7 +2420,7 @@ msgstr "参数值" #: company/models.py:429 part/models.py:913 part/models.py:2450 #: part/templates/part/part_base.html:288 -#: templates/InvenTree/settings/settings.html:273 +#: templates/InvenTree/settings/settings.html:284 #: templates/js/translated/company.js:653 templates/js/translated/part.js:715 msgid "Units" msgstr "单位" @@ -2450,7 +2437,7 @@ msgstr "" #: company/templates/company/supplier_part.html:87 order/models.py:224 #: order/templates/order/order_base.html:112 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219 -#: part/bom.py:247 stock/templates/stock/item_base.html:396 +#: part/bom.py:247 stock/templates/stock/item_base.html:397 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:823 #: templates/js/translated/part.js:215 templates/js/translated/part.js:857 @@ -2499,7 +2486,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "最低收费(例如库存费)" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:493 stock/templates/stock/item_base.html:337 +#: stock/models.py:493 stock/templates/stock/item_base.html:338 #: templates/js/translated/company.js:850 templates/js/translated/stock.js:1791 msgid "Packaging" msgstr "打包" @@ -2570,7 +2557,7 @@ msgstr "从 URL 下载图片" #: company/templates/company/company_base.html:83 order/models.py:547 #: order/templates/order/sales_order_base.html:115 stock/models.py:512 #: stock/models.py:513 stock/serializers.py:625 -#: stock/templates/stock/item_base.html:289 +#: stock/templates/stock/item_base.html:290 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1240 #: templates/js/translated/stock.js:2452 #: templates/js/translated/table_filters.js:397 @@ -2694,7 +2681,7 @@ msgid "New Sales Order" msgstr "新建销售订单" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1004 +#: templates/js/translated/build.js:1059 msgid "Assigned Stock" msgstr "" @@ -2763,7 +2750,7 @@ msgstr "删除供应商商品" #: company/templates/company/manufacturer_part.html:254 #: part/templates/part/detail.html:347 part/templates/part/detail.html:376 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 -#: users/models.py:209 +#: users/models.py:210 msgid "Delete" msgstr "删除" @@ -2816,7 +2803,7 @@ msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:477 -#: stock/templates/stock/item_base.html:401 +#: stock/templates/stock/item_base.html:402 #: templates/js/translated/company.js:790 templates/js/translated/stock.js:1748 msgid "Supplier Part" msgstr "供应商商品" @@ -3187,7 +3174,7 @@ msgstr "" #: order/models.py:836 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 -#: stock/templates/stock/item_base.html:351 +#: stock/templates/stock/item_base.html:352 #: templates/js/translated/order.js:801 templates/js/translated/part.js:832 #: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433 msgid "Purchase Order" @@ -3209,7 +3196,7 @@ msgid "Number of items received" msgstr "" #: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606 -#: stock/serializers.py:170 stock/templates/stock/item_base.html:358 +#: stock/serializers.py:170 stock/templates/stock/item_base.html:359 #: templates/js/translated/stock.js:1779 msgid "Purchase Price" msgstr "采购价格" @@ -3549,7 +3536,7 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256 +#: templates/js/translated/build.js:300 templates/js/translated/build.js:1311 #: templates/js/translated/order.js:537 templates/js/translated/order.js:1488 #: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761 msgid "Remove row" @@ -3742,7 +3729,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188 +#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1243 msgid "Actions" msgstr "" @@ -3965,7 +3952,7 @@ msgstr "提高搜索结果可见性的关键字" #: part/models.py:809 part/models.py:2276 part/models.py:2525 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 -#: templates/InvenTree/settings/settings.html:172 +#: templates/InvenTree/settings/settings.html:183 #: templates/js/translated/part.js:1261 msgid "Category" msgstr "类别" @@ -4045,7 +4032,7 @@ msgstr "" msgid "Can this part be sold to customers?" msgstr "此商品可以销售给客户吗?" -#: part/models.py:946 plugin/models.py:45 +#: part/models.py:946 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:295 @@ -4161,7 +4148,7 @@ msgid "Parent Part" msgstr "" #: part/models.py:2482 part/models.py:2531 part/models.py:2532 -#: templates/InvenTree/settings/settings.html:167 +#: templates/InvenTree/settings/settings.html:178 msgid "Parameter Template" msgstr "参数模板" @@ -4173,7 +4160,7 @@ msgstr "" msgid "Parameter Value" msgstr "" -#: part/models.py:2536 templates/InvenTree/settings/settings.html:176 +#: part/models.py:2536 templates/InvenTree/settings/settings.html:187 msgid "Default Value" msgstr "默认值" @@ -4715,19 +4702,19 @@ msgid "Subscribe to notifications for this part" msgstr "" #: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:35 #: stock/templates/stock/location.html:33 msgid "Barcode actions" msgstr "" #: part/templates/part/part_base.html:45 -#: stock/templates/stock/item_base.html:38 +#: stock/templates/stock/item_base.html:39 #: stock/templates/stock/location.html:35 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" #: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:54 +#: stock/templates/stock/item_base.html:55 #: stock/templates/stock/location.html:36 msgid "Print Label" msgstr "打印标签" @@ -4737,7 +4724,7 @@ msgid "Show pricing information" msgstr "" #: part/templates/part/part_base.html:56 -#: stock/templates/stock/item_base.html:109 +#: stock/templates/stock/item_base.html:110 #: stock/templates/stock/location.html:44 msgid "Stock actions" msgstr "" @@ -4852,7 +4839,7 @@ msgid "Latest Serial Number" msgstr "" #: part/templates/part/part_base.html:328 -#: stock/templates/stock/item_base.html:165 +#: stock/templates/stock/item_base.html:166 msgid "Search for serial number" msgstr "" @@ -5067,7 +5054,7 @@ msgstr "" msgid "Create a new variant of template '%(full_name)s'." msgstr "" -#: part/templatetags/inventree_extras.py:113 +#: part/templatetags/inventree_extras.py:116 msgid "Unknown database" msgstr "" @@ -5172,38 +5159,42 @@ msgstr "" msgid "Delete Internal Price Break" msgstr "" -#: plugin/integration.py:116 +#: plugin/integration.py:124 msgid "No author found" msgstr "" -#: plugin/integration.py:128 +#: plugin/integration.py:136 msgid "No date found" msgstr "" -#: plugin/models.py:25 +#: plugin/models.py:26 msgid "Plugin Configuration" msgstr "" -#: plugin/models.py:26 +#: plugin/models.py:27 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:31 +#: plugin/models.py:32 msgid "Key" msgstr "" -#: plugin/models.py:32 +#: plugin/models.py:33 msgid "Key of plugin" msgstr "" -#: plugin/models.py:40 +#: plugin/models.py:41 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:46 +#: plugin/models.py:47 msgid "Is the plugin active" msgstr "" +#: plugin/models.py:195 +msgid "Plugin" +msgstr "" + #: plugin/samples/integration/sample.py:42 msgid "Enable PO" msgstr "" @@ -5212,36 +5203,60 @@ msgstr "" msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/serializers.py:46 +#: plugin/samples/integration/sample.py:48 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:49 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/serializers.py:50 msgid "Source URL" msgstr "" -#: plugin/serializers.py:47 +#: plugin/serializers.py:51 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:52 +#: plugin/serializers.py:56 msgid "Package Name" msgstr "" -#: plugin/serializers.py:53 +#: plugin/serializers.py:57 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:56 +#: plugin/serializers.py:60 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:57 +#: plugin/serializers.py:61 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:72 +#: plugin/serializers.py:76 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:74 -msgid "Either packagenmae of url must be provided" +#: plugin/serializers.py:78 +msgid "Either packagename of URL must be provided" msgstr "" #: report/api.py:234 report/api.py:278 @@ -5342,9 +5357,9 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:517 stock/templates/stock/item_base.html:155 -#: templates/js/translated/build.js:238 templates/js/translated/build.js:642 -#: templates/js/translated/build.js:1018 +#: stock/models.py:517 stock/templates/stock/item_base.html:156 +#: templates/js/translated/build.js:293 templates/js/translated/build.js:697 +#: templates/js/translated/build.js:1073 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:1945 #: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415 @@ -5396,7 +5411,7 @@ msgid "Quantity is required" msgstr "" #: stock/forms.py:77 stock/forms.py:251 stock/models.py:574 -#: stock/templates/stock/item_base.html:192 +#: stock/templates/stock/item_base.html:193 #: templates/js/translated/stock.js:1701 msgid "Expiry Date" msgstr "" @@ -5446,7 +5461,7 @@ msgid "Confirm removal of installed stock items" msgstr "" #: stock/models.py:60 stock/models.py:611 -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:416 msgid "Owner" msgstr "" @@ -5508,7 +5523,7 @@ msgstr "" msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:500 stock/templates/stock/item_base.html:297 +#: stock/models.py:500 stock/templates/stock/item_base.html:298 msgid "Installed In" msgstr "" @@ -5784,7 +5799,7 @@ msgstr "" msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:57 msgid "Test Report" msgstr "" @@ -5816,189 +5831,189 @@ msgstr "" msgid "Delete Test Result" msgstr "" -#: stock/templates/stock/item_base.html:41 +#: stock/templates/stock/item_base.html:42 #: templates/js/translated/barcode.js:330 #: templates/js/translated/barcode.js:335 msgid "Unlink Barcode" msgstr "" -#: stock/templates/stock/item_base.html:43 +#: stock/templates/stock/item_base.html:44 msgid "Link Barcode" msgstr "" -#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24 +#: stock/templates/stock/item_base.html:46 templates/stock_table.html:24 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:53 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:71 +#: stock/templates/stock/item_base.html:72 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:75 +#: stock/templates/stock/item_base.html:76 #: stock/templates/stock/location.html:51 templates/stock_table.html:50 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48 +#: stock/templates/stock/item_base.html:79 templates/stock_table.html:48 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49 +#: stock/templates/stock/item_base.html:82 templates/stock_table.html:49 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:84 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/item_base.html:89 #: stock/templates/stock/location.html:57 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54 +#: stock/templates/stock/item_base.html:92 templates/stock_table.html:54 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:94 +#: stock/templates/stock/item_base.html:95 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:97 +#: stock/templates/stock/item_base.html:98 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:100 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:114 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:117 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:122 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:160 +#: stock/templates/stock/item_base.html:161 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:169 +#: stock/templates/stock/item_base.html:170 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:196 +#: stock/templates/stock/item_base.html:197 #: templates/js/translated/table_filters.js:252 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:199 #: templates/js/translated/table_filters.js:258 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:205 +#: stock/templates/stock/item_base.html:206 #: templates/js/translated/stock.js:1714 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:210 +#: stock/templates/stock/item_base.html:211 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:214 +#: stock/templates/stock/item_base.html:215 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:232 +#: stock/templates/stock/item_base.html:233 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:239 +#: stock/templates/stock/item_base.html:240 msgid "This stock item is in production and cannot be edited." msgstr "此库存项目正在生产中,无法编辑。" -#: stock/templates/stock/item_base.html:240 +#: stock/templates/stock/item_base.html:241 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:253 +#: stock/templates/stock/item_base.html:254 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:261 +#: stock/templates/stock/item_base.html:262 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:269 +#: stock/templates/stock/item_base.html:270 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:275 +#: stock/templates/stock/item_base.html:276 msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted." msgstr "" -#: stock/templates/stock/item_base.html:316 -#: templates/js/translated/build.js:1040 +#: stock/templates/stock/item_base.html:317 +#: templates/js/translated/build.js:1095 msgid "No location set" msgstr "未设置仓储地点" -#: stock/templates/stock/item_base.html:323 +#: stock/templates/stock/item_base.html:324 msgid "Barcode Identifier" msgstr "" -#: stock/templates/stock/item_base.html:365 +#: stock/templates/stock/item_base.html:366 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:383 +#: stock/templates/stock/item_base.html:384 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:408 +#: stock/templates/stock/item_base.html:409 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:498 +#: stock/templates/stock/item_base.html:499 msgid "Edit Stock Status" msgstr "" @@ -6417,7 +6432,7 @@ msgid "Changing the settings below require you to immediatly restart InvenTree. msgstr "" #: templates/InvenTree/settings/plugin.html:32 -msgid "Plugin list" +msgid "Plugins" msgstr "" #: templates/InvenTree/settings/plugin.html:37 @@ -6532,41 +6547,45 @@ msgstr "采购订单设置" msgid "Report Settings" msgstr "报表设置" -#: templates/InvenTree/settings/setting.html:28 +#: templates/InvenTree/settings/setting.html:30 msgid "No value set" msgstr "未设置值" -#: templates/InvenTree/settings/setting.html:39 +#: templates/InvenTree/settings/setting.html:41 msgid "Edit setting" msgstr "编辑设置" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:75 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings.html:77 msgid "Edit Global Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:74 +#: templates/InvenTree/settings/settings.html:79 msgid "Edit User Setting" msgstr "" -#: templates/InvenTree/settings/settings.html:157 +#: templates/InvenTree/settings/settings.html:168 msgid "No category parameter templates found" msgstr "未找到类别参数模板" -#: templates/InvenTree/settings/settings.html:179 -#: templates/InvenTree/settings/settings.html:278 +#: templates/InvenTree/settings/settings.html:190 +#: templates/InvenTree/settings/settings.html:289 msgid "Edit Template" msgstr "编辑模板" -#: templates/InvenTree/settings/settings.html:180 -#: templates/InvenTree/settings/settings.html:279 +#: templates/InvenTree/settings/settings.html:191 +#: templates/InvenTree/settings/settings.html:290 msgid "Delete Template" msgstr "删除模板" -#: templates/InvenTree/settings/settings.html:258 +#: templates/InvenTree/settings/settings.html:269 msgid "No part parameter templates found" msgstr "未找到商品参数模板" -#: templates/InvenTree/settings/settings.html:262 +#: templates/InvenTree/settings/settings.html:273 msgid "ID" msgstr "" @@ -6881,8 +6900,8 @@ msgstr "" #: templates/about.html:11 templates/about.html:105 #: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53 -#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662 -#: templates/js/translated/modals.js:965 templates/modals.html:15 +#: templates/js/translated/modals.js:573 templates/js/translated/modals.js:667 +#: templates/js/translated/modals.js:970 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" @@ -7129,15 +7148,15 @@ msgstr "" msgid "Add Attachment" msgstr "添加附件" -#: templates/base.html:96 +#: templates/base.html:97 msgid "Server Restart Required" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:99 +#: templates/base.html:100 msgid "Contact your system administrator for further information" msgstr "" @@ -7165,8 +7184,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134 -#: templates/js/translated/build.js:1755 +#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1189 +#: templates/js/translated/build.js:1810 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "空闲" @@ -7213,11 +7232,11 @@ msgstr "" msgid "Remote image must not exceed maximum allowable file size" msgstr "" -#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1035 +#: templates/js/translated/api.js:185 templates/js/translated/modals.js:1040 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1036 +#: templates/js/translated/api.js:186 templates/js/translated/modals.js:1041 msgid "No response from the InvenTree server" msgstr "" @@ -7229,27 +7248,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1045 +#: templates/js/translated/api.js:197 templates/js/translated/modals.js:1050 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1046 +#: templates/js/translated/api.js:198 templates/js/translated/modals.js:1051 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1050 +#: templates/js/translated/api.js:202 templates/js/translated/modals.js:1055 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1051 +#: templates/js/translated/api.js:203 templates/js/translated/modals.js:1056 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1055 +#: templates/js/translated/api.js:207 templates/js/translated/modals.js:1060 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1056 +#: templates/js/translated/api.js:208 templates/js/translated/modals.js:1061 msgid "The requested resource could not be located on the server" msgstr "" @@ -7261,11 +7280,11 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1060 +#: templates/js/translated/api.js:217 templates/js/translated/modals.js:1065 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1061 +#: templates/js/translated/api.js:218 templates/js/translated/modals.js:1066 msgid "Connection timeout while requesting data from server" msgstr "" @@ -7334,7 +7353,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:140 -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "Invalid server response" msgstr "" @@ -7494,7 +7513,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116 +#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1171 msgid "Variant stock allowed" msgstr "" @@ -7538,7 +7557,7 @@ msgstr "" msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860 +#: templates/js/translated/bom.js:830 templates/js/translated/build.js:915 msgid "No BOM items found" msgstr "" @@ -7546,7 +7565,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100 +#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1155 msgid "Required Part" msgstr "" @@ -7554,165 +7573,177 @@ msgstr "" msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:83 +#: templates/js/translated/build.js:84 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:117 +#: templates/js/translated/build.js:118 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:138 +#: templates/js/translated/build.js:139 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:144 +msgid "Build Order is incomplete" +msgstr "生产订单未完成" + +#: templates/js/translated/build.js:172 +msgid "Complete Build Order" +msgstr "生产订单完成" + +#: templates/js/translated/build.js:193 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:149 +#: templates/js/translated/build.js:204 msgid "Unallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:158 +#: templates/js/translated/build.js:213 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:166 +#: templates/js/translated/build.js:221 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:189 +#: templates/js/translated/build.js:244 msgid "Are you sure you wish to unallocate stock items from this build?" msgstr "" -#: templates/js/translated/build.js:207 +#: templates/js/translated/build.js:262 msgid "Unallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:225 +#: templates/js/translated/build.js:280 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:226 +#: templates/js/translated/build.js:281 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:280 +#: templates/js/translated/build.js:335 msgid "Output" msgstr "" -#: templates/js/translated/build.js:296 +#: templates/js/translated/build.js:351 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:391 +#: templates/js/translated/build.js:446 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848 +#: templates/js/translated/build.js:484 templates/js/translated/order.js:1848 msgid "Location not specified" msgstr "未指定仓储地点" -#: templates/js/translated/build.js:608 +#: templates/js/translated/build.js:663 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766 +#: templates/js/translated/build.js:1112 templates/js/translated/build.js:1821 #: templates/js/translated/order.js:1982 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767 +#: templates/js/translated/build.js:1114 templates/js/translated/build.js:1822 #: templates/js/translated/order.js:1983 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1077 +#: templates/js/translated/build.js:1132 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1087 +#: templates/js/translated/build.js:1142 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1112 +#: templates/js/translated/build.js:1167 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1129 +#: templates/js/translated/build.js:1184 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365 -#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227 +#: templates/js/translated/build.js:1194 templates/js/translated/build.js:1420 +#: templates/js/translated/build.js:1817 templates/js/translated/order.js:2227 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307 +#: templates/js/translated/build.js:1250 templates/js/translated/order.js:2307 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1199 templates/stock_table.html:53 +#: templates/js/translated/build.js:1254 templates/stock_table.html:53 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300 +#: templates/js/translated/build.js:1257 templates/js/translated/order.js:2300 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:1499 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1393 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1550 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "选择商品" -#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551 +#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1551 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565 +#: templates/js/translated/build.js:1408 templates/js/translated/order.js:1565 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600 +#: templates/js/translated/build.js:1437 templates/js/translated/order.js:1600 msgid "Confirm stock allocation" msgstr "确认库存分配" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1438 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1394 templates/js/translated/order.js:1613 +#: templates/js/translated/build.js:1449 templates/js/translated/order.js:1613 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1464 templates/js/translated/order.js:1690 +#: templates/js/translated/build.js:1519 templates/js/translated/order.js:1690 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1582 +#: templates/js/translated/build.js:1637 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1206 +#: templates/js/translated/build.js:1654 templates/js/translated/part.js:1206 #: templates/js/translated/part.js:1617 templates/js/translated/stock.js:1512 #: templates/js/translated/stock.js:2321 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1619 +#: templates/js/translated/build.js:1674 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540 +#: templates/js/translated/build.js:1735 templates/js/translated/stock.js:2540 msgid "No user information" msgstr "没有用户信息" -#: templates/js/translated/build.js:1692 +#: templates/js/translated/build.js:1747 msgid "No information" msgstr "" -#: templates/js/translated/build.js:1743 +#: templates/js/translated/build.js:1798 msgid "No parts allocated for" msgstr "" @@ -7943,12 +7974,12 @@ msgid "Select Label Template" msgstr "选择标签模板" #: templates/js/translated/modals.js:76 templates/js/translated/modals.js:120 -#: templates/js/translated/modals.js:594 +#: templates/js/translated/modals.js:599 msgid "Cancel" msgstr "取消" #: templates/js/translated/modals.js:77 templates/js/translated/modals.js:119 -#: templates/js/translated/modals.js:661 templates/js/translated/modals.js:964 +#: templates/js/translated/modals.js:666 templates/js/translated/modals.js:969 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" @@ -7965,39 +7996,39 @@ msgstr "" msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:593 +#: templates/js/translated/modals.js:598 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:650 +#: templates/js/translated/modals.js:655 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:916 +#: templates/js/translated/modals.js:921 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:928 +#: templates/js/translated/modals.js:933 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1025 +#: templates/js/translated/modals.js:1030 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1040 +#: templates/js/translated/modals.js:1045 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1041 +#: templates/js/translated/modals.js:1046 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1064 +#: templates/js/translated/modals.js:1069 msgid "Error requesting form data" msgstr "" @@ -8694,7 +8725,7 @@ msgstr "" msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:910 users/models.py:205 +#: templates/js/translated/stock.js:910 users/models.py:206 msgid "Add" msgstr "添加" @@ -9106,48 +9137,52 @@ msgstr "" msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:376 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:378 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "to" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "of" msgstr "" -#: templates/js/translated/tables.js:374 +#: templates/js/translated/tables.js:378 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:377 templates/search_form.html:6 +#: templates/js/translated/tables.js:382 templates/search_form.html:6 #: templates/search_form.html:7 msgid "Search" msgstr "搜索" -#: templates/js/translated/tables.js:380 +#: templates/js/translated/tables.js:385 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:383 +#: templates/js/translated/tables.js:388 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:386 +#: templates/js/translated/tables.js:391 msgid "Refresh" msgstr "" -#: templates/js/translated/tables.js:389 +#: templates/js/translated/tables.js:394 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:392 +#: templates/js/translated/tables.js:397 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:395 +#: templates/js/translated/tables.js:400 msgid "All" msgstr "" @@ -9331,35 +9366,35 @@ msgstr "权限" msgid "Important dates" msgstr "重要日期" -#: users/models.py:192 +#: users/models.py:193 msgid "Permission set" msgstr "权限设置" -#: users/models.py:200 +#: users/models.py:201 msgid "Group" msgstr "群组" -#: users/models.py:203 +#: users/models.py:204 msgid "View" msgstr "视图" -#: users/models.py:203 +#: users/models.py:204 msgid "Permission to view items" msgstr "查看项目权限" -#: users/models.py:205 +#: users/models.py:206 msgid "Permission to add items" msgstr "添加项目权限" -#: users/models.py:207 +#: users/models.py:208 msgid "Change" msgstr "更改" -#: users/models.py:207 +#: users/models.py:208 msgid "Permissions to edit items" msgstr "编辑项目权限" -#: users/models.py:209 +#: users/models.py:210 msgid "Permission to delete items" msgstr "删除项目权限" diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index e798ee4e30..a86c437e05 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -11,6 +11,7 @@ from decimal import Decimal from django.db import models, transaction from django.db.models import Q, F, Sum from django.db.models.functions import Coalesce + from django.core.validators import MinValueValidator from django.core.exceptions import ValidationError from django.contrib.auth.models import User @@ -24,6 +25,7 @@ from users import models as UserModels from part import models as PartModels from stock import models as stock_models from company.models import Company, SupplierPart +from plugin.events import trigger_event from InvenTree.fields import InvenTreeModelMoneyField, RoundingDecimalField from InvenTree.helpers import decimal2string, increment, getSetting @@ -317,6 +319,8 @@ class PurchaseOrder(Order): self.issue_date = datetime.now().date() self.save() + trigger_event('purchaseorder.placed', id=self.pk) + @transaction.atomic def complete_order(self): """ Marks the PurchaseOrder as COMPLETE. Order must be currently PLACED. """ @@ -326,6 +330,8 @@ class PurchaseOrder(Order): self.complete_date = datetime.now().date() self.save() + trigger_event('purchaseorder.completed', id=self.pk) + @property def is_overdue(self): """ @@ -356,6 +362,8 @@ class PurchaseOrder(Order): self.status = PurchaseOrderStatus.CANCELLED self.save() + trigger_event('purchaseorder.cancelled', id=self.pk) + def pending_line_items(self): """ Return a list of pending line items for this order. Any line item where 'received' < 'quantity' will be returned. @@ -667,6 +675,8 @@ class SalesOrder(Order): self.save() + trigger_event('salesorder.completed', id=self.pk) + return True def can_cancel(self): @@ -698,6 +708,8 @@ class SalesOrder(Order): for allocation in line.allocations.all(): allocation.delete() + trigger_event('salesorder.cancelled', id=self.pk) + return True @property @@ -1104,6 +1116,8 @@ class SalesOrderShipment(models.Model): self.save() + trigger_event('salesordershipment.completed', id=self.pk) + class SalesOrderAllocation(models.Model): """ diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index ec76846a08..604d384a67 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -1980,10 +1980,10 @@ class Part(MPTTModel): @property def attachment_count(self): - """ Count the number of attachments for this part. + """ + Count the number of attachments for this part. If the part is a variant of a template part, include the number of attachments for the template part. - """ return self.part_attachments.count() @@ -2181,7 +2181,9 @@ def after_save_part(sender, instance: Part, created, **kwargs): Function to be executed after a Part is saved """ - if not created: + if created: + pass + else: # Check part stock only if we are *updating* the part (not creating it) # Run this check in the background diff --git a/InvenTree/part/templatetags/inventree_extras.py b/InvenTree/part/templatetags/inventree_extras.py index 9dc09535fa..e2faedfd9e 100644 --- a/InvenTree/part/templatetags/inventree_extras.py +++ b/InvenTree/part/templatetags/inventree_extras.py @@ -1,11 +1,13 @@ # -*- coding: utf-8 -*- -""" This module provides template tags for extra functionality +""" +This module provides template tags for extra functionality, over and above the built-in Django tags. """ import os import sys + from django.utils.html import format_html from django.utils.translation import ugettext_lazy as _ @@ -15,6 +17,7 @@ from django import template from django.urls import reverse from django.utils.safestring import mark_safe from django.templatetags.static import StaticNode + from InvenTree import version, settings import InvenTree.helpers @@ -22,6 +25,8 @@ import InvenTree.helpers from common.models import InvenTreeSetting, ColorTheme, InvenTreeUserSetting from common.settings import currency_code_default +from plugin.models import PluginSetting + register = template.Library() @@ -104,6 +109,13 @@ def inventree_docker_mode(*args, **kwargs): return djangosettings.DOCKER +@register.simple_tag() +def plugins_enabled(*args, **kwargs): + """ Return True if plugins are enabled for the server instance """ + + return djangosettings.PLUGINS_ENABLED + + @register.simple_tag() def inventree_db_engine(*args, **kwargs): """ Return the InvenTree database backend e.g. 'postgresql' """ @@ -223,8 +235,16 @@ def setting_object(key, *args, **kwargs): if a user-setting was requested return that """ + if 'plugin' in kwargs: + # Note, 'plugin' is an instance of an InvenTreePlugin class + + plugin = kwargs['plugin'] + + return PluginSetting.get_setting_object(key, plugin=plugin) + if 'user' in kwargs: return InvenTreeUserSetting.get_setting_object(key, user=kwargs['user']) + return InvenTreeSetting.get_setting_object(key) diff --git a/InvenTree/plugin/__init__.py b/InvenTree/plugin/__init__.py index 973d341171..86f65919c4 100644 --- a/InvenTree/plugin/__init__.py +++ b/InvenTree/plugin/__init__.py @@ -1,7 +1,15 @@ -from .registry import plugins as plugin_reg +""" +Utility file to enable simper imports +""" + +from .registry import plugin_registry +from .plugin import InvenTreePlugin from .integration import IntegrationPluginBase from .action import ActionPlugin __all__ = [ - 'plugin_reg', 'IntegrationPluginBase', 'ActionPlugin', + 'ActionPlugin', + 'IntegrationPluginBase', + 'InvenTreePlugin', + 'plugin_registry', ] diff --git a/InvenTree/plugin/admin.py b/InvenTree/plugin/admin.py index 3a96a4b9ea..b20aef8057 100644 --- a/InvenTree/plugin/admin.py +++ b/InvenTree/plugin/admin.py @@ -4,43 +4,70 @@ from __future__ import unicode_literals from django.contrib import admin import plugin.models as models -from plugin import plugin_reg +import plugin.registry as registry def plugin_update(queryset, new_status: bool): - """general function for bulk changing plugins""" + """ + General function for bulk changing plugins + """ + apps_changed = False - # run through all plugins in the queryset as the save method needs to be overridden + # Run through all plugins in the queryset as the save method needs to be overridden for plugin in queryset: if plugin.active is not new_status: plugin.active = new_status plugin.save(no_reload=True) apps_changed = True - # reload plugins if they changed + # Reload plugins if they changed if apps_changed: - plugin_reg.reload_plugins() + registry.plugin_registry.reload_plugins() @admin.action(description='Activate plugin(s)') def plugin_activate(modeladmin, request, queryset): - """activate a set of plugins""" + """ + Activate a set of plugins + """ plugin_update(queryset, True) @admin.action(description='Deactivate plugin(s)') def plugin_deactivate(modeladmin, request, queryset): - """deactivate a set of plugins""" + """ + Deactivate a set of plugins + """ + plugin_update(queryset, False) +class PluginSettingInline(admin.TabularInline): + """ + Inline admin class for PluginSetting + """ + + model = models.PluginSetting + + read_only_fields = [ + 'key', + ] + + def has_add_permission(self, request, obj): + return False + + class PluginConfigAdmin(admin.ModelAdmin): - """Custom admin with restricted id fields""" + """ + Custom admin with restricted id fields + """ + readonly_fields = ["key", "name", ] - list_display = ['active', '__str__', 'key', 'name', ] + list_display = ['name', 'key', '__str__', 'active', ] list_filter = ['active'] actions = [plugin_activate, plugin_deactivate, ] + inlines = [PluginSettingInline, ] admin.site.register(models.PluginConfig, PluginConfigAdmin) diff --git a/InvenTree/plugin/api.py b/InvenTree/plugin/api.py index 4aecd6bb24..9ab3b96724 100644 --- a/InvenTree/plugin/api.py +++ b/InvenTree/plugin/api.py @@ -11,7 +11,8 @@ from rest_framework import generics from rest_framework import status from rest_framework.response import Response -from plugin.models import PluginConfig +from common.api import GlobalSettingsPermissions +from plugin.models import PluginConfig, PluginSetting import plugin.serializers as PluginSerializers @@ -76,7 +77,46 @@ class PluginInstall(generics.CreateAPIView): return serializer.save() +class PluginSettingList(generics.ListAPIView): + """ + List endpoint for all plugin related settings. + + - read only + - only accessible by staff users + """ + + queryset = PluginSetting.objects.all() + serializer_class = PluginSerializers.PluginSettingSerializer + + permission_classes = [ + GlobalSettingsPermissions, + ] + + +class PluginSettingDetail(generics.RetrieveUpdateAPIView): + """ + Detail endpoint for a plugin-specific setting. + + Note that these cannot be created or deleted via the API + """ + + queryset = PluginSetting.objects.all() + serializer_class = PluginSerializers.PluginSettingSerializer + + # Staff permission required + permission_classes = [ + GlobalSettingsPermissions, + ] + + plugin_api_urls = [ + + # Plugin settings URLs + url(r'^settings/', include([ + url(r'^(?P\d+)/', PluginSettingDetail.as_view(), name='api-plugin-setting-detail'), + url(r'^.*$', PluginSettingList.as_view(), name='api-plugin-setting-list'), + ])), + # Detail views for a single PluginConfig item url(r'^(?P\d+)/', include([ url(r'^.*$', PluginDetail.as_view(), name='api-plugin-detail'), diff --git a/InvenTree/plugin/apps.py b/InvenTree/plugin/apps.py index 8a3cd97889..47b5e9f024 100644 --- a/InvenTree/plugin/apps.py +++ b/InvenTree/plugin/apps.py @@ -1,21 +1,32 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals +import logging + from django.apps import AppConfig +from django.conf import settings + from maintenance_mode.core import set_maintenance_mode -from plugin.registry import plugins +from plugin import plugin_registry + + +logger = logging.getLogger('inventree') class PluginAppConfig(AppConfig): name = 'plugin' def ready(self): - if not plugins.is_loading: - # this is the first startup - plugins.collect_plugins() - plugins.load_plugins() - # drop out of maintenance - # makes sure we did not have an error in reloading and maintenance is still active - set_maintenance_mode(False) + if settings.PLUGINS_ENABLED: + logger.info('Loading InvenTree plugins') + + if not plugin_registry.is_loading: + # this is the first startup + plugin_registry.collect_plugins() + plugin_registry.load_plugins() + + # drop out of maintenance + # makes sure we did not have an error in reloading and maintenance is still active + set_maintenance_mode(False) diff --git a/InvenTree/plugin/builtin/integration/mixins.py b/InvenTree/plugin/builtin/integration/mixins.py index c7edc8ac36..586fc8a666 100644 --- a/InvenTree/plugin/builtin/integration/mixins.py +++ b/InvenTree/plugin/builtin/integration/mixins.py @@ -2,11 +2,20 @@ Plugin mixin classes """ -from django.conf.urls import url, include +import logging +import json +import requests +from django.conf.urls import url, include +from django.db.utils import OperationalError, ProgrammingError + +from plugin.models import PluginConfig, PluginSetting from plugin.urls import PLUGIN_BASE +logger = logging.getLogger('inventree') + + class SettingsMixin: """ Mixin that enables global settings for the plugin @@ -17,44 +26,180 @@ class SettingsMixin: def __init__(self): super().__init__() - self.add_mixin('settings', 'has_globalsettings', __class__) - self.globalsettings = getattr(self, 'SETTINGS', None) + self.add_mixin('settings', 'has_settings', __class__) + self.settings = getattr(self, 'SETTINGS', {}) @property - def has_globalsettings(self): + def has_settings(self): """ Does this plugin use custom global settings """ - return bool(self.globalsettings) + return bool(self.settings) + + def get_setting(self, key): + """ + Return the 'value' of the setting associated with this plugin + """ + + return PluginSetting.get_setting(key, plugin=self) + + def set_setting(self, key, value, user=None): + """ + Set plugin setting value by key + """ + + try: + plugin, _ = PluginConfig.objects.get_or_create(key=self.plugin_slug(), name=self.plugin_name()) + except (OperationalError, ProgrammingError): + plugin = None + + if not plugin: + # Cannot find associated plugin model, return + return + + PluginSetting.set_setting(key, value, user, plugin=plugin) + + +class ScheduleMixin: + """ + Mixin that provides support for scheduled tasks. + + Implementing classes must provide a dict object called SCHEDULED_TASKS, + which provides information on the tasks to be scheduled. + + SCHEDULED_TASKS = { + # Name of the task (will be prepended with the plugin name) + 'test_server': { + 'func': 'myplugin.tasks.test_server', # Python function to call (no arguments!) + 'schedule': "I", # Schedule type (see django_q.Schedule) + 'minutes': 30, # Number of minutes (only if schedule type = Minutes) + 'repeats': 5, # Number of repeats (leave blank for 'forever') + } + } + + Note: 'schedule' parameter must be one of ['I', 'H', 'D', 'W', 'M', 'Q', 'Y'] + """ + + ALLOWABLE_SCHEDULE_TYPES = ['I', 'H', 'D', 'W', 'M', 'Q', 'Y'] + + # Override this in subclass model + SCHEDULED_TASKS = {} + + class MixinMeta: + MIXIN_NAME = 'Schedule' + + def __init__(self): + super().__init__() + self.add_mixin('schedule', 'has_scheduled_tasks', __class__) + self.scheduled_tasks = getattr(self, 'SCHEDULED_TASKS', {}) + + self.validate_scheduled_tasks() @property - def globalsettingspatterns(self): - """ - Get patterns for InvenTreeSetting defintion - """ - if self.has_globalsettings: - return {f'PLUGIN_{self.slug.upper()}_{key}': value for key, value in self.globalsettings.items()} - return None + def has_scheduled_tasks(self): + return bool(self.scheduled_tasks) - def _globalsetting_name(self, key): + def validate_scheduled_tasks(self): """ - Get global name of setting + Check that the provided scheduled tasks are valid """ - return f'PLUGIN_{self.slug.upper()}_{key}' - def get_globalsetting(self, key): - """ - get plugin global setting by key - """ - from common.models import InvenTreeSetting - return InvenTreeSetting.get_setting(self._globalsetting_name(key)) + if not self.has_scheduled_tasks: + raise ValueError("SCHEDULED_TASKS not defined") - def set_globalsetting(self, key, value, user): + for key, task in self.scheduled_tasks.items(): + + if 'func' not in task: + raise ValueError(f"Task '{key}' is missing 'func' parameter") + + if 'schedule' not in task: + raise ValueError(f"Task '{key}' is missing 'schedule' parameter") + + schedule = task['schedule'].upper().strip() + + if schedule not in self.ALLOWABLE_SCHEDULE_TYPES: + raise ValueError(f"Task '{key}': Schedule '{schedule}' is not a valid option") + + # If 'minutes' is selected, it must be provided! + if schedule == 'I' and 'minutes' not in task: + raise ValueError(f"Task '{key}' is missing 'minutes' parameter") + + def get_task_name(self, key): + # Generate a 'unique' task name + slug = self.plugin_slug() + return f"plugin.{slug}.{key}" + + def get_task_names(self): + # Returns a list of all task names associated with this plugin instance + return [self.get_task_name(key) for key in self.scheduled_tasks.keys()] + + def register_tasks(self): """ - set plugin global setting by key + Register the tasks with the database """ - from common.models import InvenTreeSetting - return InvenTreeSetting.set_setting(self._globalsetting_name(key), value, user) + + try: + from django_q.models import Schedule + + for key, task in self.scheduled_tasks.items(): + + task_name = self.get_task_name(key) + + # If a matching scheduled task does not exist, create it! + if not Schedule.objects.filter(name=task_name).exists(): + + logger.info(f"Adding scheduled task '{task_name}'") + + Schedule.objects.create( + name=task_name, + func=task['func'], + schedule_type=task['schedule'], + minutes=task.get('minutes', None), + repeats=task.get('repeats', -1), + ) + except (ProgrammingError, OperationalError): + # Database might not yet be ready + logger.warning("register_tasks failed, database not ready") + + def unregister_tasks(self): + """ + Deregister the tasks with the database + """ + + try: + from django_q.models import Schedule + + for key, task in self.scheduled_tasks.items(): + + task_name = self.get_task_name(key) + + try: + scheduled_task = Schedule.objects.get(name=task_name) + scheduled_task.delete() + except Schedule.DoesNotExist: + pass + except (ProgrammingError, OperationalError): + # Database might not yet be ready + logger.warning("unregister_tasks failed, database not ready") + + +class EventMixin: + """ + Mixin that provides support for responding to triggered events. + + Implementing classes must provide a "process_event" function: + """ + + def process_event(self, event, *args, **kwargs): + # Default implementation does not do anything + raise NotImplementedError + + class MixinMeta: + MIXIN_NAME = 'Events' + + def __init__(self): + super().__init__() + self.add_mixin('events', True, __class__) class UrlsMixin: @@ -116,7 +261,9 @@ class NavigationMixin: NAVIGATION_TAB_ICON = "fas fa-question" class MixinMeta: - """meta options for this mixin""" + """ + meta options for this mixin + """ MIXIN_NAME = 'Navigation Links' def __init__(self): @@ -176,3 +323,113 @@ class AppMixin: this plugin is always an app with this plugin """ return True + + +class APICallMixin: + """ + Mixin that enables easier API calls for a plugin + + Steps to set up: + 1. Add this mixin before (left of) SettingsMixin and PluginBase + 2. Add two settings for the required url and token/passowrd (use `SettingsMixin`) + 3. Save the references to keys of the settings in `API_URL_SETTING` and `API_TOKEN_SETTING` + 4. (Optional) Set `API_TOKEN` to the name required for the token by the external API - Defaults to `Bearer` + 5. (Optional) Override the `api_url` property method if the setting needs to be extended + 6. (Optional) Override `api_headers` to add extra headers (by default the token and Content-Type are contained) + 7. Access the API in you plugin code via `api_call` + + Example: + ``` + from plugin import IntegrationPluginBase + from plugin.mixins import APICallMixin, SettingsMixin + + + class SampleApiCallerPlugin(APICallMixin, SettingsMixin, IntegrationPluginBase): + ''' + A small api call sample + ''' + PLUGIN_NAME = "Sample API Caller" + + SETTINGS = { + 'API_TOKEN': { + 'name': 'API Token', + 'protected': True, + }, + 'API_URL': { + 'name': 'External URL', + 'description': 'Where is your API located?', + 'default': 'reqres.in', + }, + } + API_URL_SETTING = 'API_URL' + API_TOKEN_SETTING = 'API_TOKEN' + + def get_external_url(self): + ''' + returns data from the sample endpoint + ''' + return self.api_call('api/users/2') + ``` + """ + API_METHOD = 'https' + API_URL_SETTING = None + API_TOKEN_SETTING = None + + API_TOKEN = 'Bearer' + + class MixinMeta: + """meta options for this mixin""" + MIXIN_NAME = 'API calls' + + def __init__(self): + super().__init__() + self.add_mixin('api_call', 'has_api_call', __class__) + + @property + def has_api_call(self): + """Is the mixin ready to call external APIs?""" + if not bool(self.API_URL_SETTING): + raise ValueError("API_URL_SETTING must be defined") + if not bool(self.API_TOKEN_SETTING): + raise ValueError("API_TOKEN_SETTING must be defined") + return True + + @property + def api_url(self): + return f'{self.API_METHOD}://{self.get_setting(self.API_URL_SETTING)}' + + @property + def api_headers(self): + return { + self.API_TOKEN: self.get_setting(self.API_TOKEN_SETTING), + 'Content-Type': 'application/json' + } + + def api_build_url_args(self, arguments): + groups = [] + for key, val in arguments.items(): + groups.append(f'{key}={",".join([str(a) for a in val])}') + return f'?{"&".join(groups)}' + + def api_call(self, endpoint, method: str = 'GET', url_args=None, data=None, headers=None, simple_response: bool = True): + if url_args: + endpoint += self.api_build_url_args(url_args) + + if headers is None: + headers = self.api_headers + + # build kwargs for call + kwargs = { + 'url': f'{self.api_url}/{endpoint}', + 'headers': headers, + } + if data: + kwargs['data'] = json.dumps(data) + + # run command + response = requests.request(method, **kwargs) + + # return + if simple_response: + return response.json() + return response diff --git a/InvenTree/plugin/events.py b/InvenTree/plugin/events.py new file mode 100644 index 0000000000..b714d123b9 --- /dev/null +++ b/InvenTree/plugin/events.py @@ -0,0 +1,188 @@ +""" +Functions for triggering and responding to server side events +""" + +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +import logging + +from django.conf import settings +from django.db import transaction +from django.db.models.signals import post_save, post_delete +from django.dispatch.dispatcher import receiver + +from common.models import InvenTreeSetting + +from InvenTree.ready import canAppAccessDatabase +from InvenTree.tasks import offload_task + +from plugin.registry import plugin_registry + + +logger = logging.getLogger('inventree') + + +def trigger_event(event, *args, **kwargs): + """ + Trigger an event with optional arguments. + + This event will be stored in the database, + and the worker will respond to it later on. + """ + + if not settings.PLUGINS_ENABLED: + # Do nothing if plugins are not enabled + return + + if not canAppAccessDatabase(): + logger.debug(f"Ignoring triggered event '{event}' - database not ready") + return + + logger.debug(f"Event triggered: '{event}'") + + offload_task( + 'plugin.events.register_event', + event, + *args, + **kwargs + ) + + +def register_event(event, *args, **kwargs): + """ + Register the event with any interested plugins. + + Note: This function is processed by the background worker, + as it performs multiple database access operations. + """ + + logger.debug(f"Registering triggered event: '{event}'") + + # Determine if there are any plugins which are interested in responding + if settings.PLUGIN_TESTING or InvenTreeSetting.get_setting('ENABLE_PLUGINS_EVENTS'): + + with transaction.atomic(): + + for slug, plugin in plugin_registry.plugins.items(): + + if plugin.mixin_enabled('events'): + + config = plugin.plugin_config() + + if config and config.active: + + logger.debug(f"Registering callback for plugin '{slug}'") + + # Offload a separate task for each plugin + offload_task( + 'plugin.events.process_event', + slug, + event, + *args, + **kwargs + ) + + +def process_event(plugin_slug, event, *args, **kwargs): + """ + Respond to a triggered event. + + This function is run by the background worker process. + + This function may queue multiple functions to be handled by the background worker. + """ + + logger.info(f"Plugin '{plugin_slug}' is processing triggered event '{event}'") + + plugin = plugin_registry.plugins[plugin_slug] + + plugin.process_event(event, *args, **kwargs) + + +def allow_table_event(table_name): + """ + Determine if an automatic event should be fired for a given table. + We *do not* want events to be fired for some tables! + """ + + table_name = table_name.lower().strip() + + # Ignore any tables which start with these prefixes + ignore_prefixes = [ + 'account_', + 'auth_', + 'authtoken_', + 'django_', + 'error_', + 'exchange_', + 'otp_', + 'plugin_', + 'socialaccount_', + 'user_', + 'users_', + ] + + if any([table_name.startswith(prefix) for prefix in ignore_prefixes]): + return False + + ignore_tables = [ + 'common_notificationentry', + 'common_webhookendpoint', + 'common_webhookmessage', + ] + + if table_name in ignore_tables: + return False + + return True + + +@receiver(post_save) +def after_save(sender, instance, created, **kwargs): + """ + Trigger an event whenever a database entry is saved + """ + + table = sender.objects.model._meta.db_table + + instance_id = getattr(instance, 'id', None) + + if instance_id is None: + return + + if not allow_table_event(table): + return + + if created: + trigger_event( + 'instance.created', + id=instance.id, + model=sender.__name__, + table=table, + ) + else: + trigger_event( + 'instance.saved', + id=instance.id, + model=sender.__name__, + table=table, + ) + + +@receiver(post_delete) +def after_delete(sender, instance, **kwargs): + """ + Trigger an event whenever a database entry is deleted + """ + + table = sender.objects.model._meta.db_table + + if not allow_table_event(table): + return + + trigger_event( + 'instance.deleted', + model=sender.__name__, + table=table, + ) diff --git a/InvenTree/plugin/helpers.py b/InvenTree/plugin/helpers.py index 003ca707b4..fb46df8927 100644 --- a/InvenTree/plugin/helpers.py +++ b/InvenTree/plugin/helpers.py @@ -10,14 +10,14 @@ from django.conf import settings # region logging / errors def log_plugin_error(error, reference: str = 'general'): - from plugin import plugin_reg + from plugin import plugin_registry # make sure the registry is set up - if reference not in plugin_reg.errors: - plugin_reg.errors[reference] = [] + if reference not in plugin_registry.errors: + plugin_registry.errors[reference] = [] # add error to stack - plugin_reg.errors[reference].append(error) + plugin_registry.errors[reference].append(error) class IntegrationPluginError(Exception): diff --git a/InvenTree/plugin/integration.py b/InvenTree/plugin/integration.py index 3cd8ae86d2..c00b81419d 100644 --- a/InvenTree/plugin/integration.py +++ b/InvenTree/plugin/integration.py @@ -9,7 +9,6 @@ import pathlib from django.urls.base import reverse from django.conf import settings -from django.utils.text import slugify from django.utils.translation import ugettext_lazy as _ import plugin.plugin as plugin @@ -20,19 +19,27 @@ logger = logging.getLogger("inventree") class MixinBase: - """general base for mixins""" + """ + General base for mixins + """ def __init__(self) -> None: self._mixinreg = {} self._mixins = {} def add_mixin(self, key: str, fnc_enabled=True, cls=None): - """add a mixin to the plugins registry""" + """ + Add a mixin to the plugins registry + """ + self._mixins[key] = fnc_enabled self.setup_mixin(key, cls=cls) def setup_mixin(self, key, cls=None): - """define mixin details for the current mixin -> provides meta details for all active mixins""" + """ + Define mixin details for the current mixin -> provides meta details for all active mixins + """ + # get human name human_name = getattr(cls.MixinMeta, 'MIXIN_NAME', key) if cls and hasattr(cls, 'MixinMeta') else key @@ -44,7 +51,10 @@ class MixinBase: @property def registered_mixins(self, with_base: bool = False): - """get all registered mixins for the plugin""" + """ + Get all registered mixins for the plugin + """ + mixins = getattr(self, '_mixinreg', None) if mixins: # filter out base @@ -59,8 +69,6 @@ class IntegrationPluginBase(MixinBase, plugin.InvenTreePlugin): """ The IntegrationPluginBase class is used to integrate with 3rd party software """ - PLUGIN_SLUG = None - PLUGIN_TITLE = None AUTHOR = None DESCRIPTION = None @@ -84,11 +92,11 @@ class IntegrationPluginBase(MixinBase, plugin.InvenTreePlugin): # region properties @property def slug(self): - """slug for the plugin""" - slug = getattr(self, 'PLUGIN_SLUG', None) - if not slug: - slug = self.plugin_name() - return slugify(slug) + return self.plugin_slug() + + @property + def name(self): + return self.plugin_name() @property def human_name(self): @@ -168,6 +176,11 @@ class IntegrationPluginBase(MixinBase, plugin.InvenTreePlugin): """check if mixin is enabled and ready""" if self.mixin(key): fnc_name = self._mixins.get(key) + + # Allow for simple case where the mixin is "always" ready + if fnc_name is True: + return True + return getattr(self, fnc_name, True) return False # endregion diff --git a/InvenTree/plugin/loader.py b/InvenTree/plugin/loader.py index 2491336a51..2d17f8c36f 100644 --- a/InvenTree/plugin/loader.py +++ b/InvenTree/plugin/loader.py @@ -4,7 +4,7 @@ load templates for loaded plugins from django.template.loaders.filesystem import Loader as FilesystemLoader from pathlib import Path -from plugin import plugin_reg +from plugin import plugin_registry class PluginTemplateLoader(FilesystemLoader): @@ -12,7 +12,7 @@ class PluginTemplateLoader(FilesystemLoader): def get_dirs(self): dirname = 'templates' template_dirs = [] - for plugin in plugin_reg.plugins.values(): + for plugin in plugin_registry.plugins.values(): new_path = Path(plugin.path) / dirname if Path(new_path).is_dir(): template_dirs.append(new_path) diff --git a/InvenTree/plugin/migrations/0003_pluginsetting.py b/InvenTree/plugin/migrations/0003_pluginsetting.py new file mode 100644 index 0000000000..83e744fa6b --- /dev/null +++ b/InvenTree/plugin/migrations/0003_pluginsetting.py @@ -0,0 +1,26 @@ +# Generated by Django 3.2.10 on 2022-01-01 10:52 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('plugin', '0002_alter_pluginconfig_options'), + ] + + operations = [ + migrations.CreateModel( + name='PluginSetting', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('key', models.CharField(help_text='Settings key (must be unique - case insensitive', max_length=50)), + ('value', models.CharField(blank=True, help_text='Settings value', max_length=200)), + ('plugin', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='settings', to='plugin.pluginconfig', verbose_name='Plugin')), + ], + options={ + 'unique_together': {('plugin', 'key')}, + }, + ), + ] diff --git a/InvenTree/plugin/mixins/__init__.py b/InvenTree/plugin/mixins/__init__.py index ceb5de5885..ca5f0c615d 100644 --- a/InvenTree/plugin/mixins/__init__.py +++ b/InvenTree/plugin/mixins/__init__.py @@ -1,9 +1,15 @@ -"""utility class to enable simpler imports""" -from ..builtin.integration.mixins import AppMixin, SettingsMixin, UrlsMixin, NavigationMixin +""" +Utility class to enable simpler imports +""" + +from ..builtin.integration.mixins import APICallMixin, AppMixin, SettingsMixin, EventMixin, ScheduleMixin, UrlsMixin, NavigationMixin __all__ = [ + 'APICallMixin', 'AppMixin', + 'EventMixin', 'NavigationMixin', + 'ScheduleMixin', 'SettingsMixin', 'UrlsMixin', ] diff --git a/InvenTree/plugin/models.py b/InvenTree/plugin/models.py index 93c6335497..8b81eb2062 100644 --- a/InvenTree/plugin/models.py +++ b/InvenTree/plugin/models.py @@ -8,16 +8,17 @@ from __future__ import unicode_literals from django.utils.translation import gettext_lazy as _ from django.db import models -from plugin import plugin_reg +import common.models + +from plugin import InvenTreePlugin, plugin_registry class PluginConfig(models.Model): - """ A PluginConfig object holds settings for plugins. - - It is used to designate a Part as 'subscribed' for a given User. + """ + A PluginConfig object holds settings for plugins. Attributes: - key: slug of the plugin - must be unique + key: slug of the plugin (this must be unique across all installed plugins!) name: PluginName of the plugin - serves for a manual double check if the right plugin is used active: Should the plugin be loaded? """ @@ -63,12 +64,15 @@ class PluginConfig(models.Model): # functions def __init__(self, *args, **kwargs): - """override to set original state of""" + """ + Override to set original state of the plugin-config instance + """ + super().__init__(*args, **kwargs) self.__org_active = self.active # append settings from registry - self.plugin = plugin_reg.plugins.get(self.key, None) + self.plugin = plugin_registry.plugins.get(self.key, None) def get_plugin_meta(name): if self.plugin: @@ -82,16 +86,112 @@ class PluginConfig(models.Model): } def save(self, force_insert=False, force_update=False, *args, **kwargs): - """extend save method to reload plugins if the 'active' status changes""" + """ + Extend save method to reload plugins if the 'active' status changes + """ reload = kwargs.pop('no_reload', False) # check if no_reload flag is set ret = super().save(force_insert, force_update, *args, **kwargs) if not reload: if self.active is False and self.__org_active is True: - plugin_reg.reload_plugins() + plugin_registry.reload_plugins() elif self.active is True and self.__org_active is False: - plugin_reg.reload_plugins() + plugin_registry.reload_plugins() return ret + + +class PluginSetting(common.models.BaseInvenTreeSetting): + """ + This model represents settings for individual plugins + """ + + class Meta: + unique_together = [ + ('plugin', 'key'), + ] + + def clean(self, **kwargs): + + kwargs['plugin'] = self.plugin + + super().clean(**kwargs) + + """ + We override the following class methods, + so that we can pass the plugin instance + """ + + @property + def name(self): + return self.__class__.get_setting_name(self.key, plugin=self.plugin) + + @property + def default_value(self): + return self.__class__.get_setting_default(self.key, plugin=self.plugin) + + @property + def description(self): + return self.__class__.get_setting_description(self.key, plugin=self.plugin) + + @property + def units(self): + return self.__class__.get_setting_units(self.key, plugin=self.plugin) + + def choices(self): + return self.__class__.get_setting_choices(self.key, plugin=self.plugin) + + @classmethod + def get_setting_definition(cls, key, **kwargs): + """ + In the BaseInvenTreeSetting class, we have a class attribute named 'SETTINGS', + which is a dict object that fully defines all the setting parameters. + + Here, unlike the BaseInvenTreeSetting, we do not know the definitions of all settings + 'ahead of time' (as they are defined externally in the plugins). + + Settings can be provided by the caller, as kwargs['settings']. + + If not provided, we'll look at the plugin registry to see what settings are available, + (if the plugin is specified!) + """ + + if 'settings' not in kwargs: + + plugin = kwargs.pop('plugin', None) + + if plugin: + + if issubclass(plugin.__class__, InvenTreePlugin): + plugin = plugin.plugin_config() + + kwargs['settings'] = plugin_registry.mixins_settings.get(plugin.key, {}) + + return super().get_setting_definition(key, **kwargs) + + @classmethod + def get_filters(cls, key, **kwargs): + """ + Override filters method to ensure settings are filtered by plugin id + """ + + filters = super().get_filters(key, **kwargs) + + plugin = kwargs.get('plugin', None) + + if plugin: + if issubclass(plugin.__class__, InvenTreePlugin): + plugin = plugin.plugin_config() + filters['plugin'] = plugin + + return filters + + plugin = models.ForeignKey( + PluginConfig, + related_name='settings', + null=False, + verbose_name=_('Plugin'), + on_delete=models.CASCADE, + ) diff --git a/InvenTree/plugin/plugin.py b/InvenTree/plugin/plugin.py index 93199df7b7..8842553ba7 100644 --- a/InvenTree/plugin/plugin.py +++ b/InvenTree/plugin/plugin.py @@ -1,5 +1,10 @@ # -*- coding: utf-8 -*- -"""Base Class for InvenTree plugins""" +""" +Base Class for InvenTree plugins +""" + +from django.db.utils import OperationalError, ProgrammingError +from django.utils.text import slugify class InvenTreePlugin(): @@ -7,12 +12,66 @@ class InvenTreePlugin(): Base class for a plugin """ + def __init__(self): + pass + # Override the plugin name for each concrete plugin instance PLUGIN_NAME = '' + PLUGIN_SLUG = None + + PLUGIN_TITLE = None + def plugin_name(self): - """get plugin name""" + """ + Return the name of this plugin plugin + """ return self.PLUGIN_NAME - def __init__(self): - pass + def plugin_slug(self): + + slug = getattr(self, 'PLUGIN_SLUG', None) + + if slug is None: + slug = self.plugin_name() + + return slugify(slug.lower()) + + def plugin_title(self): + + if self.PLUGIN_TITLE: + return self.PLUGIN_TITLE + else: + return self.plugin_name() + + def plugin_config(self, raise_error=False): + """ + Return the PluginConfig object associated with this plugin + """ + + try: + import plugin.models + + cfg, _ = plugin.models.PluginConfig.objects.get_or_create( + key=self.plugin_slug(), + name=self.plugin_name(), + ) + except (OperationalError, ProgrammingError) as error: + cfg = None + + if raise_error: + raise error + + return cfg + + def is_active(self): + """ + Return True if this plugin is currently active + """ + + cfg = self.plugin_config() + + if cfg: + return cfg.active + else: + return False diff --git a/InvenTree/plugin/registry.py b/InvenTree/plugin/registry.py index d858d6c7f0..448365b338 100644 --- a/InvenTree/plugin/registry.py +++ b/InvenTree/plugin/registry.py @@ -1,7 +1,10 @@ """ -registry for plugins -holds the class and the object that contains all code to maintain plugin states +Registry for loading and managing multiple plugins at run-time + +- Holds the class and the object that contains all code to maintain plugin states +- Manages setup and teardown of plugin class instances """ + import importlib import pathlib import logging @@ -33,7 +36,11 @@ from .helpers import get_plugin_error, IntegrationPluginError logger = logging.getLogger('inventree') -class Plugins: +class PluginsRegistry: + """ + The PluginsRegistry class + """ + def __init__(self) -> None: # plugin registry self.plugins = {} @@ -49,29 +56,39 @@ class Plugins: # integration specific self.installed_apps = [] # Holds all added plugin_paths + # mixins - self.mixins_globalsettings = {} + self.mixins_settings = {} # region public plugin functions def load_plugins(self): - """load and activate all IntegrationPlugins""" + """ + Load and activate all IntegrationPlugins + """ + + if not settings.PLUGINS_ENABLED: + # Plugins not enabled, do nothing + return + from plugin.helpers import log_plugin_error logger.info('Start loading plugins') - # set maintanace mode + + # Set maintanace mode _maintenance = bool(get_maintenance_mode()) if not _maintenance: set_maintenance_mode(True) - registered_sucessfull = False + registered_successful = False blocked_plugin = None retry_counter = settings.PLUGIN_RETRY - while not registered_sucessfull: + + while not registered_successful: try: - # we are using the db so for migrations etc we need to try this block + # We are using the db so for migrations etc we need to try this block self._init_plugins(blocked_plugin) self._activate_plugins() - registered_sucessfull = True + registered_successful = True except (OperationalError, ProgrammingError): # Exception if the database has not been migrated yet logger.info('Database not accessible while loading plugins') @@ -81,13 +98,14 @@ class Plugins: log_plugin_error({error.path: error.message}, 'load') blocked_plugin = error.path # we will not try to load this app again - # init apps without any integration plugins + # Initialize apps without any integration plugins self._clean_registry() self._clean_installed_apps() self._activate_plugins(force_reload=True) - # we do not want to end in an endless loop + # We do not want to end in an endless loop retry_counter -= 1 + if retry_counter <= 0: if settings.PLUGIN_TESTING: print('[PLUGIN] Max retries, breaking loading') @@ -98,15 +116,24 @@ class Plugins: # now the loading will re-start up with init - # remove maintenance + # Remove maintenance mode if not _maintenance: set_maintenance_mode(False) + logger.info('Finished loading plugins') def unload_plugins(self): - """unload and deactivate all IntegrationPlugins""" + """ + Unload and deactivate all IntegrationPlugins + """ + + if not settings.PLUGINS_ENABLED: + # Plugins not enabled, do nothing + return + logger.info('Start unloading plugins') - # set maintanace mode + + # Set maintanace mode _maintenance = bool(get_maintenance_mode()) if not _maintenance: set_maintenance_mode(True) @@ -123,21 +150,31 @@ class Plugins: logger.info('Finished unloading plugins') def reload_plugins(self): - """safely reload IntegrationPlugins""" - # do not reload whe currently loading + """ + Safely reload IntegrationPlugins + """ + + # Do not reload whe currently loading if self.is_loading: return logger.info('Start reloading plugins') + with maintenance_mode_on(): self.unload_plugins() self.load_plugins() - logger.info('Finished reloading plugins') - # endregion - # region general plugin managment mechanisms + logger.info('Finished reloading plugins') + def collect_plugins(self): - """collect integration plugins from all possible ways of loading""" + """ + Collect integration plugins from all possible ways of loading + """ + + if not settings.PLUGINS_ENABLED: + # Plugins not enabled, do nothing + return + self.plugin_modules = [] # clear # Collect plugins from paths @@ -146,35 +183,41 @@ class Plugins: if modules: [self.plugin_modules.append(item) for item in modules] - # check if not running in testing mode and apps should be loaded from hooks + # Check if not running in testing mode and apps should be loaded from hooks if (not settings.PLUGIN_TESTING) or (settings.PLUGIN_TESTING and settings.PLUGIN_TESTING_SETUP): # Collect plugins from setup entry points for entry in metadata.entry_points().get('inventree_plugins', []): - plugin = entry.load() - plugin.is_package = True - self.plugin_modules.append(plugin) + try: + plugin = entry.load() + plugin.is_package = True + self.plugin_modules.append(plugin) + except Exception as error: + get_plugin_error(error, do_log=True, log_name='discovery') # Log collected plugins logger.info(f'Collected {len(self.plugin_modules)} plugins!') logger.info(", ".join([a.__module__ for a in self.plugin_modules])) def _init_plugins(self, disabled=None): - """initialise all found plugins + """ + Initialise all found plugins :param disabled: loading path of disabled app, defaults to None :type disabled: str, optional :raises error: IntegrationPluginError """ + from plugin.models import PluginConfig logger.info('Starting plugin initialisation') + # Initialize integration plugins for plugin in self.plugin_modules: - # check if package + # Check if package was_packaged = getattr(plugin, 'is_package', False) - # check if activated - # these checks only use attributes - never use plugin supplied functions -> that would lead to arbitrary code execution!! + # Check if activated + # These checks only use attributes - never use plugin supplied functions -> that would lead to arbitrary code execution!! plug_name = plugin.PLUGIN_NAME plug_key = plugin.PLUGIN_SLUG if getattr(plugin, 'PLUGIN_SLUG', None) else plug_name plug_key = slugify(plug_key) # keys are slugs! @@ -186,23 +229,23 @@ class Plugins: raise error plugin_db_setting = None - # always activate if testing + # Always activate if testing if settings.PLUGIN_TESTING or (plugin_db_setting and plugin_db_setting.active): - # check if the plugin was blocked -> threw an error + # Check if the plugin was blocked -> threw an error if disabled: # option1: package, option2: file-based if (plugin.__name__ == disabled) or (plugin.__module__ == disabled): - # errors are bad so disable the plugin in the database + # Errors are bad so disable the plugin in the database if not settings.PLUGIN_TESTING: plugin_db_setting.active = False # TODO save the error to the plugin plugin_db_setting.save(no_reload=True) - # add to inactive plugins so it shows up in the ui + # Add to inactive plugins so it shows up in the ui self.plugins_inactive[plug_key] = plugin_db_setting continue # continue -> the plugin is not loaded - # init package + # Initialize package # now we can be sure that an admin has activated the plugin # TODO check more stuff -> as of Nov 2021 there are not many checks in place # but we could enhance those to check signatures, run the plugin against a whitelist etc. @@ -225,7 +268,8 @@ class Plugins: self.plugins_inactive[plug_key] = plugin_db_setting def _activate_plugins(self, force_reload=False): - """run integration functions for all plugins + """ + Run integration functions for all plugins :param force_reload: force reload base apps, defaults to False :type force_reload: bool, optional @@ -234,49 +278,91 @@ class Plugins: plugins = self.plugins.items() logger.info(f'Found {len(plugins)} active plugins') - self.activate_integration_globalsettings(plugins) + self.activate_integration_settings(plugins) + self.activate_integration_schedule(plugins) self.activate_integration_app(plugins, force_reload=force_reload) def _deactivate_plugins(self): - """run integration deactivation functions for all plugins""" + """ + Run integration deactivation functions for all plugins + """ + self.deactivate_integration_app() - self.deactivate_integration_globalsettings() - # endregion + self.deactivate_integration_schedule() + self.deactivate_integration_settings() - # region specific integrations - # region integration_globalsettings - def activate_integration_globalsettings(self, plugins): - from common.models import InvenTreeSetting + def activate_integration_settings(self, plugins): - if settings.PLUGIN_TESTING or InvenTreeSetting.get_setting('ENABLE_PLUGINS_GLOBALSETTING'): - logger.info('Registering IntegrationPlugin global settings') - for slug, plugin in plugins: - if plugin.mixin_enabled('settings'): - plugin_setting = plugin.globalsettingspatterns - self.mixins_globalsettings[slug] = plugin_setting + logger.info('Activating plugin settings') - # Add to settings dir - InvenTreeSetting.GLOBAL_SETTINGS.update(plugin_setting) + self.mixins_settings = {} - def deactivate_integration_globalsettings(self): - from common.models import InvenTreeSetting + for slug, plugin in plugins: + if plugin.mixin_enabled('settings'): + plugin_setting = plugin.settings + self.mixins_settings[slug] = plugin_setting + + def deactivate_integration_settings(self): # collect all settings plugin_settings = {} - for _, plugin_setting in self.mixins_globalsettings.items(): + + for _, plugin_setting in self.mixins_settings.items(): plugin_settings.update(plugin_setting) - # remove settings - for setting in plugin_settings: - InvenTreeSetting.GLOBAL_SETTINGS.pop(setting) - # clear cache - self.mixins_globalsettings = {} - # endregion + self.mixins_settings = {} + + def activate_integration_schedule(self, plugins): + + logger.info('Activating plugin tasks') + + from common.models import InvenTreeSetting + + # List of tasks we have activated + task_keys = [] + + if settings.PLUGIN_TESTING or InvenTreeSetting.get_setting('ENABLE_PLUGINS_SCHEDULE'): + + for slug, plugin in plugins: + + if plugin.mixin_enabled('schedule'): + config = plugin.plugin_config() + + # Only active tasks for plugins which are enabled + if config and config.active: + plugin.register_tasks() + task_keys += plugin.get_task_names() + + if len(task_keys) > 0: + logger.info(f"Activated {len(task_keys)} scheduled tasks") + + # Remove any scheduled tasks which do not match + # This stops 'old' plugin tasks from accumulating + try: + from django_q.models import Schedule + + scheduled_plugin_tasks = Schedule.objects.filter(name__istartswith="plugin.") + + deleted_count = 0 + + for task in scheduled_plugin_tasks: + if task.name not in task_keys: + task.delete() + deleted_count += 1 + + if deleted_count > 0: + logger.info(f"Removed {deleted_count} old scheduled tasks") + except (ProgrammingError, OperationalError): + # Database might not yet be ready + logger.warning("activate_integration_schedule failed, database not ready") + + def deactivate_integration_schedule(self): + pass - # region integration_app def activate_integration_app(self, plugins, force_reload=False): - """activate AppMixin plugins - add custom apps and reload + """ + Activate AppMixin plugins - add custom apps and reload :param plugins: list of IntegrationPlugins that should be installed :type plugins: dict @@ -360,7 +446,10 @@ class Plugins: return plugin_path def deactivate_integration_app(self): - """deactivate integration app - some magic required""" + """ + Deactivate integration app - some magic required + """ + # unregister models from admin for plugin_path in self.installed_apps: models = [] # the modelrefs need to be collected as poping an item in a iter is not welcomed @@ -448,8 +537,6 @@ class Plugins: return True, [] except Exception as error: get_plugin_error(error, do_raise=True) - # endregion - # endregion -plugins = Plugins() +plugin_registry = PluginsRegistry() diff --git a/InvenTree/plugin/samples/integration/api_caller.py b/InvenTree/plugin/samples/integration/api_caller.py new file mode 100644 index 0000000000..36e1583ba0 --- /dev/null +++ b/InvenTree/plugin/samples/integration/api_caller.py @@ -0,0 +1,32 @@ +""" +Sample plugin for calling an external API +""" +from plugin import IntegrationPluginBase +from plugin.mixins import APICallMixin, SettingsMixin + + +class SampleApiCallerPlugin(APICallMixin, SettingsMixin, IntegrationPluginBase): + """ + A small api call sample + """ + PLUGIN_NAME = "Sample API Caller" + + SETTINGS = { + 'API_TOKEN': { + 'name': 'API Token', + 'protected': True, + }, + 'API_URL': { + 'name': 'External URL', + 'description': 'Where is your API located?', + 'default': 'reqres.in', + }, + } + API_URL_SETTING = 'API_URL' + API_TOKEN_SETTING = 'API_TOKEN' + + def get_external_url(self): + """ + returns data from the sample endpoint + """ + return self.api_call('api/users/2') diff --git a/InvenTree/plugin/samples/integration/event_sample.py b/InvenTree/plugin/samples/integration/event_sample.py new file mode 100644 index 0000000000..dddb97da1d --- /dev/null +++ b/InvenTree/plugin/samples/integration/event_sample.py @@ -0,0 +1,23 @@ +""" +Sample plugin which responds to events +""" + +from plugin import IntegrationPluginBase +from plugin.mixins import EventMixin + + +class EventPluginSample(EventMixin, IntegrationPluginBase): + """ + A sample plugin which provides supports for triggered events + """ + + PLUGIN_NAME = "EventPlugin" + PLUGIN_SLUG = "event" + PLUGIN_TITLE = "Triggered Events" + + def process_event(self, event, *args, **kwargs): + """ Custom event processing """ + + print(f"Processing triggered event: '{event}'") + print("args:", str(args)) + print("kwargs:", str(kwargs)) diff --git a/InvenTree/plugin/samples/integration/sample.py b/InvenTree/plugin/samples/integration/sample.py index afc4a8fe8a..a05e804def 100644 --- a/InvenTree/plugin/samples/integration/sample.py +++ b/InvenTree/plugin/samples/integration/sample.py @@ -44,6 +44,27 @@ class SampleIntegrationPlugin(AppMixin, SettingsMixin, UrlsMixin, NavigationMixi 'default': True, 'validator': bool, }, + 'API_KEY': { + 'name': _('API Key'), + 'description': _('Key required for accessing external API'), + }, + 'NUMERICAL_SETTING': { + 'name': _('Numerical'), + 'description': _('A numerical setting'), + 'validator': int, + 'default': 123, + }, + 'CHOICE_SETTING': { + 'name': _("Choice Setting"), + 'description': _('A setting with multiple choices'), + 'choices': [ + ('A', 'Anaconda'), + ('B', 'Bat'), + ('C', 'Cat'), + ('D', 'Dog'), + ], + 'default': 'A', + }, } NAVIGATION = [ diff --git a/InvenTree/plugin/samples/integration/scheduled_task.py b/InvenTree/plugin/samples/integration/scheduled_task.py new file mode 100644 index 0000000000..825dab134f --- /dev/null +++ b/InvenTree/plugin/samples/integration/scheduled_task.py @@ -0,0 +1,37 @@ +""" +Sample plugin which supports task scheduling +""" + +from plugin import IntegrationPluginBase +from plugin.mixins import ScheduleMixin + + +# Define some simple tasks to perform +def print_hello(): + print("Hello") + + +def print_world(): + print("World") + + +class ScheduledTaskPlugin(ScheduleMixin, IntegrationPluginBase): + """ + A sample plugin which provides support for scheduled tasks + """ + + PLUGIN_NAME = "ScheduledTasksPlugin" + PLUGIN_SLUG = "schedule" + PLUGIN_TITLE = "Scheduled Tasks" + + SCHEDULED_TASKS = { + 'hello': { + 'func': 'plugin.samples.integration.scheduled_task.print_hello', + 'schedule': 'I', + 'minutes': 45, + }, + 'world': { + 'func': 'plugin.samples.integration.scheduled_task.print_hello', + 'schedule': 'H', + }, + } diff --git a/InvenTree/plugin/samples/integration/test_api_caller.py b/InvenTree/plugin/samples/integration/test_api_caller.py new file mode 100644 index 0000000000..e15edfad94 --- /dev/null +++ b/InvenTree/plugin/samples/integration/test_api_caller.py @@ -0,0 +1,21 @@ +""" Unit tests for action caller sample""" + +from django.test import TestCase + +from plugin import plugin_registry + + +class SampleApiCallerPluginTests(TestCase): + """ Tests for SampleApiCallerPluginTests """ + + def test_return(self): + """check if the external api call works""" + # The plugin should be defined + self.assertIn('sample-api-caller', plugin_registry.plugins) + plg = plugin_registry.plugins['sample-api-caller'] + self.assertTrue(plg) + + # do an api call + result = plg.get_external_url() + self.assertTrue(result) + self.assertIn('data', result,) diff --git a/InvenTree/plugin/serializers.py b/InvenTree/plugin/serializers.py index e25e253498..2eab60daa9 100644 --- a/InvenTree/plugin/serializers.py +++ b/InvenTree/plugin/serializers.py @@ -1,5 +1,5 @@ """ -JSON serializers for Stock app +JSON serializers for plugin app """ # -*- coding: utf-8 -*- @@ -11,14 +11,18 @@ import subprocess from django.core.exceptions import ValidationError from django.conf import settings from django.utils.translation import ugettext_lazy as _ +from django.utils import timezone from rest_framework import serializers -from plugin.models import PluginConfig +from plugin.models import PluginConfig, PluginSetting +from InvenTree.config import get_plugin_file +from common.serializers import SettingsSerializer class PluginConfigSerializer(serializers.ModelSerializer): - """ Serializer for a PluginConfig: + """ + Serializer for a PluginConfig: """ meta = serializers.DictField(read_only=True) @@ -71,7 +75,7 @@ class PluginConfigInstallSerializer(serializers.Serializer): if not data.get('confirm'): raise ValidationError({'confirm': _('Installation not confirmed')}) if (not data.get('url')) and (not data.get('packagename')): - msg = _('Either packagenmae of url must be provided') + msg = _('Either packagename of URL must be provided') raise ValidationError({'url': msg, 'packagename': msg}) return data @@ -83,37 +87,64 @@ class PluginConfigInstallSerializer(serializers.Serializer): url = data.get('url', '') # build up the command - command = 'python -m pip install'.split() + install_name = [] if url: # use custom registration / VCS if True in [identifier in url for identifier in ['git+https', 'hg+https', 'svn+svn', ]]: # using a VCS provider if packagename: - command.append(f'{packagename}@{url}') + install_name.append(f'{packagename}@{url}') else: - command.append(url) + install_name.append(url) else: # using a custom package repositories - command.append('-i') - command.append(url) - command.append(packagename) + install_name.append('-i') + install_name.append(url) + install_name.append(packagename) elif packagename: # use pypi - command.append(packagename) + install_name.append(packagename) + command = 'python -m pip install'.split() + command.extend(install_name) ret = {'command': ' '.join(command)} + success = False # execute pypi try: result = subprocess.check_output(command, cwd=os.path.dirname(settings.BASE_DIR)) ret['result'] = str(result, 'utf-8') ret['success'] = True + success = True except subprocess.CalledProcessError as error: ret['result'] = str(error.output, 'utf-8') ret['error'] = True - # register plugins - # TODO + # save plugin to plugin_file if installed successfull + if success: + with open(get_plugin_file(), "a") as plugin_file: + plugin_file.write(f'{" ".join(install_name)} # Installed {timezone.now()} by {str(self.context["request"].user)}\n') return ret + + +class PluginSettingSerializer(SettingsSerializer): + """ + Serializer for the PluginSetting model + """ + + plugin = serializers.PrimaryKeyRelatedField(read_only=True) + + class Meta: + model = PluginSetting + fields = [ + 'pk', + 'key', + 'value', + 'name', + 'description', + 'type', + 'choices', + 'plugin', + ] diff --git a/InvenTree/plugin/templatetags/plugin_extras.py b/InvenTree/plugin/templatetags/plugin_extras.py index 1b4b269844..7852133ebb 100644 --- a/InvenTree/plugin/templatetags/plugin_extras.py +++ b/InvenTree/plugin/templatetags/plugin_extras.py @@ -7,7 +7,7 @@ from django import template from django.urls import reverse from common.models import InvenTreeSetting -from plugin import plugin_reg +from plugin import plugin_registry register = template.Library() @@ -16,19 +16,19 @@ register = template.Library() @register.simple_tag() def plugin_list(*args, **kwargs): """ Return a list of all installed integration plugins """ - return plugin_reg.plugins + return plugin_registry.plugins @register.simple_tag() def inactive_plugin_list(*args, **kwargs): """ Return a list of all inactive integration plugins """ - return plugin_reg.plugins_inactive + return plugin_registry.plugins_inactive @register.simple_tag() -def plugin_globalsettings(plugin, *args, **kwargs): - """ Return a list of all global settings for a plugin """ - return plugin_reg.mixins_globalsettings.get(plugin) +def plugin_settings(plugin, *args, **kwargs): + """ Return a list of all custom settings for a plugin """ + return plugin_registry.mixins_settings.get(plugin) @register.simple_tag() @@ -57,4 +57,4 @@ def safe_url(view_name, *args, **kwargs): @register.simple_tag() def plugin_errors(*args, **kwargs): """Return all plugin errors""" - return plugin_reg.errors + return plugin_registry.errors diff --git a/InvenTree/plugin/test_api.py b/InvenTree/plugin/test_api.py index 0bb5f7789b..fdc97e407b 100644 --- a/InvenTree/plugin/test_api.py +++ b/InvenTree/plugin/test_api.py @@ -8,7 +8,7 @@ from InvenTree.api_tester import InvenTreeAPITestCase class PluginDetailAPITest(InvenTreeAPITestCase): """ - Tests the plugin AP I endpoints + Tests the plugin API endpoints """ roles = [ @@ -19,7 +19,7 @@ class PluginDetailAPITest(InvenTreeAPITestCase): ] def setUp(self): - self.MSG_NO_PKG = 'Either packagenmae of url must be provided' + self.MSG_NO_PKG = 'Either packagename of URL must be provided' self.PKG_NAME = 'minimal' super().setUp() @@ -64,14 +64,14 @@ class PluginDetailAPITest(InvenTreeAPITestCase): Test the PluginConfig action commands """ from plugin.models import PluginConfig - from plugin import plugin_reg + from plugin import plugin_registry url = reverse('admin:plugin_pluginconfig_changelist') fixtures = PluginConfig.objects.all() # check if plugins were registered -> in some test setups the startup has no db access if not fixtures: - plugin_reg.reload_plugins() + plugin_registry.reload_plugins() fixtures = PluginConfig.objects.all() print([str(a) for a in fixtures]) diff --git a/InvenTree/plugin/test_integration.py b/InvenTree/plugin/test_integration.py index 1371535cfa..dbc77f7cd0 100644 --- a/InvenTree/plugin/test_integration.py +++ b/InvenTree/plugin/test_integration.py @@ -8,22 +8,22 @@ from django.contrib.auth import get_user_model from datetime import datetime from plugin import IntegrationPluginBase -from plugin.mixins import AppMixin, SettingsMixin, UrlsMixin, NavigationMixin +from plugin.mixins import AppMixin, SettingsMixin, UrlsMixin, NavigationMixin, APICallMixin from plugin.urls import PLUGIN_BASE class BaseMixinDefinition: def test_mixin_name(self): # mixin name - self.assertEqual(self.mixin.registered_mixins[0]['key'], self.MIXIN_NAME) + self.assertIn(self.MIXIN_NAME, [item['key'] for item in self.mixin.registered_mixins]) # human name - self.assertEqual(self.mixin.registered_mixins[0]['human_name'], self.MIXIN_HUMAN_NAME) + self.assertIn(self.MIXIN_HUMAN_NAME, [item['human_name'] for item in self.mixin.registered_mixins]) class SettingsMixinTest(BaseMixinDefinition, TestCase): MIXIN_HUMAN_NAME = 'Settings' MIXIN_NAME = 'settings' - MIXIN_ENABLE_CHECK = 'has_globalsettings' + MIXIN_ENABLE_CHECK = 'has_settings' TEST_SETTINGS = {'SETTING1': {'default': '123', }} @@ -42,25 +42,19 @@ class SettingsMixinTest(BaseMixinDefinition, TestCase): def test_function(self): # settings variable - self.assertEqual(self.mixin.globalsettings, self.TEST_SETTINGS) - - # settings pattern - target_pattern = {f'PLUGIN_{self.mixin.slug.upper()}_{key}': value for key, value in self.mixin.globalsettings.items()} - self.assertEqual(self.mixin.globalsettingspatterns, target_pattern) - - # no settings - self.assertIsNone(self.mixin_nothing.globalsettings) - self.assertIsNone(self.mixin_nothing.globalsettingspatterns) + self.assertEqual(self.mixin.settings, self.TEST_SETTINGS) # calling settings # not existing - self.assertEqual(self.mixin.get_globalsetting('ABCD'), '') - self.assertEqual(self.mixin_nothing.get_globalsetting('ABCD'), '') + self.assertEqual(self.mixin.get_setting('ABCD'), '') + self.assertEqual(self.mixin_nothing.get_setting('ABCD'), '') + # right setting - self.mixin.set_globalsetting('SETTING1', '12345', self.test_user) - self.assertEqual(self.mixin.get_globalsetting('SETTING1'), '12345') + self.mixin.set_setting('SETTING1', '12345', self.test_user) + self.assertEqual(self.mixin.get_setting('SETTING1'), '12345') + # no setting - self.assertEqual(self.mixin_nothing.get_globalsetting(''), '') + self.assertEqual(self.mixin_nothing.get_setting(''), '') class UrlsMixinTest(BaseMixinDefinition, TestCase): @@ -148,6 +142,79 @@ class NavigationMixinTest(BaseMixinDefinition, TestCase): self.assertEqual(self.nothing_mixin.navigation_name, '') +class APICallMixinTest(BaseMixinDefinition, TestCase): + MIXIN_HUMAN_NAME = 'API calls' + MIXIN_NAME = 'api_call' + MIXIN_ENABLE_CHECK = 'has_api_call' + + def setUp(self): + class MixinCls(APICallMixin, SettingsMixin, IntegrationPluginBase): + PLUGIN_NAME = "Sample API Caller" + + SETTINGS = { + 'API_TOKEN': { + 'name': 'API Token', + 'protected': True, + }, + 'API_URL': { + 'name': 'External URL', + 'description': 'Where is your API located?', + 'default': 'reqres.in', + }, + } + API_URL_SETTING = 'API_URL' + API_TOKEN_SETTING = 'API_TOKEN' + + def get_external_url(self): + ''' + returns data from the sample endpoint + ''' + return self.api_call('api/users/2') + self.mixin = MixinCls() + + class WrongCLS(APICallMixin, IntegrationPluginBase): + pass + self.mixin_wrong = WrongCLS() + + class WrongCLS2(APICallMixin, IntegrationPluginBase): + API_URL_SETTING = 'test' + self.mixin_wrong2 = WrongCLS2() + + def test_function(self): + # check init + self.assertTrue(self.mixin.has_api_call) + # api_url + self.assertEqual('https://reqres.in', self.mixin.api_url) + + # api_headers + headers = self.mixin.api_headers + self.assertEqual(headers, {'Bearer': '', 'Content-Type': 'application/json'}) + + # api_build_url_args + # 1 arg + result = self.mixin.api_build_url_args({'a': 'b'}) + self.assertEqual(result, '?a=b') + # more args + result = self.mixin.api_build_url_args({'a': 'b', 'c': 'd'}) + self.assertEqual(result, '?a=b&c=d') + # list args + result = self.mixin.api_build_url_args({'a': 'b', 'c': ['d', 'e', 'f', ]}) + self.assertEqual(result, '?a=b&c=d,e,f') + + # api_call + result = self.mixin.get_external_url() + self.assertTrue(result) + self.assertIn('data', result,) + + # wrongly defined plugins should not load + with self.assertRaises(ValueError): + self.mixin_wrong.has_api_call() + + # cover wrong token setting + with self.assertRaises(ValueError): + self.mixin_wrong.has_api_call() + + class IntegrationPluginBaseTests(TestCase): """ Tests for IntegrationPluginBase """ diff --git a/InvenTree/plugin/test_plugin.py b/InvenTree/plugin/test_plugin.py index 3e0a1967db..2013ad43c8 100644 --- a/InvenTree/plugin/test_plugin.py +++ b/InvenTree/plugin/test_plugin.py @@ -1,4 +1,6 @@ -""" Unit tests for plugins """ +""" +Unit tests for plugins +""" from django.test import TestCase @@ -6,9 +8,8 @@ import plugin.plugin import plugin.integration from plugin.samples.integration.sample import SampleIntegrationPlugin from plugin.samples.integration.another_sample import WrongIntegrationPlugin, NoIntegrationPlugin -# from plugin.plugins import load_action_plugins, load_barcode_plugins import plugin.templatetags.plugin_extras as plugin_tags -from plugin import plugin_reg +from plugin import plugin_registry class InvenTreePluginTests(TestCase): @@ -57,17 +58,17 @@ class PluginTagTests(TestCase): def test_tag_plugin_list(self): """test that all plugins are listed""" - self.assertEqual(plugin_tags.plugin_list(), plugin_reg.plugins) + self.assertEqual(plugin_tags.plugin_list(), plugin_registry.plugins) def test_tag_incative_plugin_list(self): """test that all inactive plugins are listed""" - self.assertEqual(plugin_tags.inactive_plugin_list(), plugin_reg.plugins_inactive) + self.assertEqual(plugin_tags.inactive_plugin_list(), plugin_registry.plugins_inactive) - def test_tag_plugin_globalsettings(self): + def test_tag_plugin_settings(self): """check all plugins are listed""" self.assertEqual( - plugin_tags.plugin_globalsettings(self.sample), - plugin_reg.mixins_globalsettings.get(self.sample) + plugin_tags.plugin_settings(self.sample), + plugin_registry.mixins_settings.get(self.sample) ) def test_tag_mixin_enabled(self): @@ -89,4 +90,4 @@ class PluginTagTests(TestCase): def test_tag_plugin_errors(self): """test that all errors are listed""" - self.assertEqual(plugin_tags.plugin_errors(), plugin_reg.errors) + self.assertEqual(plugin_tags.plugin_errors(), plugin_registry.errors) diff --git a/InvenTree/plugin/urls.py b/InvenTree/plugin/urls.py index 419dce5a88..1457aaf6f1 100644 --- a/InvenTree/plugin/urls.py +++ b/InvenTree/plugin/urls.py @@ -1,18 +1,24 @@ """ URL lookup for plugin app """ + from django.conf.urls import url, include -from plugin import plugin_reg +from plugin import plugin_registry PLUGIN_BASE = 'plugin' # Constant for links def get_plugin_urls(): - """returns a urlpattern that can be integrated into the global urls""" + """ + Returns a urlpattern that can be integrated into the global urls + """ + urls = [] - for plugin in plugin_reg.plugins.values(): + + for plugin in plugin_registry.plugins.values(): if plugin.mixin_enabled('urls'): urls.append(plugin.urlpatterns) + return url(f'^{PLUGIN_BASE}/', include((urls, 'plugin'))) diff --git a/InvenTree/stock/models.py b/InvenTree/stock/models.py index d302b1676c..140bd9c8e3 100644 --- a/InvenTree/stock/models.py +++ b/InvenTree/stock/models.py @@ -35,6 +35,8 @@ import common.models import report.models import label.models +from plugin.events import trigger_event + from InvenTree.status_codes import StockStatus, StockHistoryCode from InvenTree.models import InvenTreeTree, InvenTreeAttachment from InvenTree.fields import InvenTreeModelMoneyField, InvenTreeURLField @@ -718,6 +720,12 @@ class StockItem(MPTTModel): notes=notes, ) + trigger_event( + 'stockitem.assignedtocustomer', + id=self.id, + customer=customer.id, + ) + # Return the reference to the stock item return item @@ -745,6 +753,11 @@ class StockItem(MPTTModel): self.customer = None self.location = location + trigger_event( + 'stockitem.returnedfromcustomer', + id=self.id, + ) + self.save() # If stock item is incoming, an (optional) ETA field @@ -1786,7 +1799,7 @@ def after_delete_stock_item(sender, instance: StockItem, **kwargs): @receiver(post_save, sender=StockItem, dispatch_uid='stock_item_post_save_log') -def after_save_stock_item(sender, instance: StockItem, **kwargs): +def after_save_stock_item(sender, instance: StockItem, created, **kwargs): """ Hook function to be executed after StockItem object is saved/updated """ diff --git a/InvenTree/stock/serializers.py b/InvenTree/stock/serializers.py index 1c4c8844ff..cdc844095b 100644 --- a/InvenTree/stock/serializers.py +++ b/InvenTree/stock/serializers.py @@ -426,6 +426,7 @@ class LocationSerializer(InvenTree.serializers.InvenTreeModelSerializer): 'parent', 'pathstring', 'items', + 'owner', ] diff --git a/InvenTree/templates/InvenTree/settings/login.html b/InvenTree/templates/InvenTree/settings/login.html index b7f32465c6..a52e35fb12 100644 --- a/InvenTree/templates/InvenTree/settings/login.html +++ b/InvenTree/templates/InvenTree/settings/login.html @@ -13,19 +13,19 @@ - {% include "InvenTree/settings/setting.html" with key="LOGIN_ENABLE_SSO" icon="fa-info-circle" %} - {% include "InvenTree/settings/setting.html" with key="LOGIN_ENABLE_PWD_FORGOT" icon="fa-info-circle" %} - {% include "InvenTree/settings/setting.html" with key="LOGIN_MAIL_REQUIRED" icon="fa-info-circle" %} - {% include "InvenTree/settings/setting.html" with key="LOGIN_ENFORCE_MFA" %} + {% include "InvenTree/settings/setting.html" with key="LOGIN_ENABLE_SSO" icon="fa-user-shield" %} + {% include "InvenTree/settings/setting.html" with key="LOGIN_ENABLE_PWD_FORGOT" icon="fa-user-lock" %} + {% include "InvenTree/settings/setting.html" with key="LOGIN_MAIL_REQUIRED" icon="fa-at" %} + {% include "InvenTree/settings/setting.html" with key="LOGIN_ENFORCE_MFA" icon='fa-key' %} - {% include "InvenTree/settings/setting.html" with key="LOGIN_ENABLE_REG" icon="fa-info-circle" %} - {% include "InvenTree/settings/setting.html" with key="LOGIN_SIGNUP_MAIL_TWICE" icon="fa-info-circle" %} - {% include "InvenTree/settings/setting.html" with key="LOGIN_SIGNUP_PWD_TWICE" icon="fa-info-circle" %} - {% include "InvenTree/settings/setting.html" with key="LOGIN_SIGNUP_SSO_AUTO" icon="fa-info-circle" %} - {% include "InvenTree/settings/setting.html" with key="SIGNUP_GROUP" %} + {% include "InvenTree/settings/setting.html" with key="LOGIN_ENABLE_REG" icon="fa-user-plus" %} + {% include "InvenTree/settings/setting.html" with key="LOGIN_SIGNUP_MAIL_TWICE" icon="fa-at" %} + {% include "InvenTree/settings/setting.html" with key="LOGIN_SIGNUP_PWD_TWICE" icon="fa-user-lock" %} + {% include "InvenTree/settings/setting.html" with key="LOGIN_SIGNUP_SSO_AUTO" icon="fa-key" %} + {% include "InvenTree/settings/setting.html" with key="SIGNUP_GROUP" icon="fa-users" %}
{% trans 'Signup' %}
diff --git a/InvenTree/templates/InvenTree/settings/mixins/settings.html b/InvenTree/templates/InvenTree/settings/mixins/settings.html index 910d4bbfbb..57218b3699 100644 --- a/InvenTree/templates/InvenTree/settings/mixins/settings.html +++ b/InvenTree/templates/InvenTree/settings/mixins/settings.html @@ -5,12 +5,12 @@

{% trans "Settings" %}

-{% plugin_globalsettings plugin_key as plugin_settings %} +{% plugin_settings plugin_key as plugin_settings %} {% for setting in plugin_settings %} - {% include "InvenTree/settings/setting.html" with key=setting%} + {% include "InvenTree/settings/setting.html" with key=setting plugin=plugin %} {% endfor %}
\ No newline at end of file diff --git a/InvenTree/templates/InvenTree/settings/plugin.html b/InvenTree/templates/InvenTree/settings/plugin.html index ac3129eddc..7b428e161f 100644 --- a/InvenTree/templates/InvenTree/settings/plugin.html +++ b/InvenTree/templates/InvenTree/settings/plugin.html @@ -19,17 +19,18 @@
- {% include "InvenTree/settings/setting.html" with key="ENABLE_PLUGINS_URL" %} - {% include "InvenTree/settings/setting.html" with key="ENABLE_PLUGINS_NAVIGATION" %} - {% include "InvenTree/settings/setting.html" with key="ENABLE_PLUGINS_GLOBALSETTING"%} - {% include "InvenTree/settings/setting.html" with key="ENABLE_PLUGINS_APP"%} + {% include "InvenTree/settings/setting.html" with key="ENABLE_PLUGINS_SCHEDULE" icon="fa-calendar-alt" %} + {% include "InvenTree/settings/setting.html" with key="ENABLE_PLUGINS_EVENTS" icon="fa-reply-all" %} + {% include "InvenTree/settings/setting.html" with key="ENABLE_PLUGINS_URL" icon="fa-link" %} + {% include "InvenTree/settings/setting.html" with key="ENABLE_PLUGINS_NAVIGATION" icon="fa-sitemap" %} + {% include "InvenTree/settings/setting.html" with key="ENABLE_PLUGINS_APP" icon="fa-rocket" %}
-

{% trans "Plugin list" %}

+

{% trans "Plugins" %}

{% include "spacer.html" %}
{% url 'admin:plugin_pluginconfig_changelist' as url %} @@ -70,7 +71,7 @@ {% if mixin_list %} {% for mixin in mixin_list %} - {{ mixin.human_name }} + {{ mixin.human_name }} {% endfor %} {% endif %} diff --git a/InvenTree/templates/InvenTree/settings/plugin_settings.html b/InvenTree/templates/InvenTree/settings/plugin_settings.html index 59178300ac..a670d71c34 100644 --- a/InvenTree/templates/InvenTree/settings/plugin_settings.html +++ b/InvenTree/templates/InvenTree/settings/plugin_settings.html @@ -90,7 +90,7 @@ - + {% trans "Installation path" %} {{ plugin.package_path }} diff --git a/InvenTree/templates/InvenTree/settings/report.html b/InvenTree/templates/InvenTree/settings/report.html index 89d26feba6..a25ace23ce 100644 --- a/InvenTree/templates/InvenTree/settings/report.html +++ b/InvenTree/templates/InvenTree/settings/report.html @@ -12,10 +12,10 @@ - {% include "InvenTree/settings/setting.html" with key="REPORT_ENABLE" %} - {% include "InvenTree/settings/setting.html" with key="REPORT_DEFAULT_PAGE_SIZE" %} - {% include "InvenTree/settings/setting.html" with key="REPORT_DEBUG_MODE" %} - {% include "InvenTree/settings/setting.html" with key="REPORT_ENABLE_TEST_REPORT" %} + {% include "InvenTree/settings/setting.html" with key="REPORT_ENABLE" icon="fa-file-pdf" %} + {% include "InvenTree/settings/setting.html" with key="REPORT_DEFAULT_PAGE_SIZE" icon="fa-print" %} + {% include "InvenTree/settings/setting.html" with key="REPORT_DEBUG_MODE" icon="fa-laptop-code" %} + {% include "InvenTree/settings/setting.html" with key="REPORT_ENABLE_TEST_REPORT" icon="fa-vial" %}
diff --git a/InvenTree/templates/InvenTree/settings/setting.html b/InvenTree/templates/InvenTree/settings/setting.html index 7419b7ff34..16fc67ef86 100644 --- a/InvenTree/templates/InvenTree/settings/setting.html +++ b/InvenTree/templates/InvenTree/settings/setting.html @@ -1,10 +1,12 @@ {% load inventree_extras %} {% load i18n %} -{% if user_setting %} - {% setting_object key user=request.user as setting %} +{% if plugin %} +{% setting_object key plugin=plugin as setting %} +{% elif user_setting %} +{% setting_object key user=request.user as setting %} {% else %} - {% setting_object key as setting %} +{% setting_object key as setting %} {% endif %} @@ -13,7 +15,7 @@ {% endif %} - {% trans setting.name %} + {{ setting.name }} {% if setting.is_bool %}
@@ -32,11 +34,11 @@
{% endif %} - {% trans setting.description %} + {{ setting.description }}
-
diff --git a/InvenTree/templates/InvenTree/settings/settings.html b/InvenTree/templates/InvenTree/settings/settings.html index cb87c6765b..5fcd18644f 100644 --- a/InvenTree/templates/InvenTree/settings/settings.html +++ b/InvenTree/templates/InvenTree/settings/settings.html @@ -39,14 +39,17 @@ {% include "InvenTree/settings/build.html" %} {% include "InvenTree/settings/po.html" %} {% include "InvenTree/settings/so.html" %} -{% include "InvenTree/settings/plugin.html" %} +{% plugins_enabled as plug %} +{% if plug %} +{% include "InvenTree/settings/plugin.html" %} {% plugin_list as pl_list %} {% for plugin_key, plugin in pl_list.items %} {% if plugin.registered_mixins %} {% include "InvenTree/settings/plugin_settings.html" %} {% endif %} {% endfor %} +{% endif %} {% endif %} @@ -62,16 +65,27 @@ $('table').find('.btn-edit-setting').click(function() { var setting = $(this).attr('setting'); var pk = $(this).attr('pk'); - + var plugin = $(this).attr('plugin'); var is_global = true; if ($(this).attr('user')){ is_global = false; } + var title = ''; + + if (plugin != null) { + title = '{% trans "Edit Plugin Setting" %}'; + } else if (is_global) { + title = '{% trans "Edit Global Setting" %}'; + } else { + title = '{% trans "Edit User Setting" %}'; + } + editSetting(pk, { + plugin: plugin, global: is_global, - title: is_global ? '{% trans "Edit Global Setting" %}' : '{% trans "Edit User Setting" %}', + title: title, }); }); @@ -322,9 +336,12 @@ $("#import-part").click(function() { launchModalForm("{% url 'api-part-import' %}?reset", {}); }); +{% plugins_enabled as plug %} +{% if plug %} $("#install-plugin").click(function() { installPlugin(); }); +{% endif %} enableSidebar('settings'); diff --git a/InvenTree/templates/InvenTree/settings/sidebar.html b/InvenTree/templates/InvenTree/settings/sidebar.html index 13c370ac16..b17b226f28 100644 --- a/InvenTree/templates/InvenTree/settings/sidebar.html +++ b/InvenTree/templates/InvenTree/settings/sidebar.html @@ -47,15 +47,17 @@ {% trans "Sales Orders" as text %} {% include "sidebar_item.html" with label='sales-order' text=text icon="fa-truck" %} +{% plugins_enabled as plug %} +{% if plug %} {% include "sidebar_header.html" with text="Plugin Settings" %} - -{% include "sidebar_item.html" with label='plugin' text="Plugin" icon="fa-plug" %} +{% include "sidebar_item.html" with label='plugin' text="Plugins" icon="fa-plug" %} {% plugin_list as pl_list %} {% for plugin_key, plugin in pl_list.items %} - {% if plugin.registered_mixins %} - {% include "sidebar_item.html" with label='plugin-'|add:plugin_key text=plugin.human_name %} - {% endif %} +{% if plugin.registered_mixins %} +{% include "sidebar_item.html" with label='plugin-'|add:plugin_key text=plugin.human_name %} +{% endif %} {% endfor %} +{% endif %} {% endif %} \ No newline at end of file diff --git a/InvenTree/templates/InvenTree/settings/stock.html b/InvenTree/templates/InvenTree/settings/stock.html index d5455750d7..a3c0940c1f 100644 --- a/InvenTree/templates/InvenTree/settings/stock.html +++ b/InvenTree/templates/InvenTree/settings/stock.html @@ -11,7 +11,6 @@ - {% include "InvenTree/settings/setting.html" with key="STOCK_GROUP_BY_PART" icon="fa-layer-group" %} {% include "InvenTree/settings/setting.html" with key="STOCK_ENABLE_EXPIRY" icon="fa-stopwatch" %} {% include "InvenTree/settings/setting.html" with key="STOCK_STALE_DAYS" icon="fa-calendar" %} {% include "InvenTree/settings/setting.html" with key="STOCK_ALLOW_EXPIRED_SALE" icon="fa-truck" %} diff --git a/InvenTree/templates/InvenTree/settings/user.html b/InvenTree/templates/InvenTree/settings/user.html index ae04568f53..9bd0dba26e 100644 --- a/InvenTree/templates/InvenTree/settings/user.html +++ b/InvenTree/templates/InvenTree/settings/user.html @@ -214,88 +214,6 @@ -
-
-

{% trans "Theme Settings" %}

-
- -
-
- {% csrf_token %} - - -
- -
- -
-
- -
-
- -
-
-

{% trans "Language Settings" %}

-
- -
-
- {% csrf_token %} - - -
- -
- -
-

{% trans "Some languages are not complete" %} - {% if ALL_LANG %} - . {% trans "Show only sufficent" %} - {% else %} - and hidden. {% trans "Show them too" %} - {% endif %} -

-
- -
-
-

{% trans "Help the translation efforts!" %}

-

{% blocktrans with link="https://crowdin.com/project/inventree" %}Native language translation of the - InvenTree web application is community contributed via crowdin. Contributions are - welcomed and encouraged.{% endblocktrans %}

-
-
-
diff --git a/InvenTree/templates/base.html b/InvenTree/templates/base.html index aac99948f3..35fd07afe4 100644 --- a/InvenTree/templates/base.html +++ b/InvenTree/templates/base.html @@ -6,6 +6,7 @@ {% settings_value 'REPORT_ENABLE_TEST_REPORT' as test_report_enabled %} {% settings_value "REPORT_ENABLE" as report_enabled %} {% settings_value "SERVER_RESTART_REQUIRED" as server_restart_required %} +{% inventree_demo_mode as demo_mode %} @@ -90,7 +91,7 @@ {% block alerts %}
- {% if server_restart_required %} + {% if server_restart_required and not demo_mode %}
{% endif %} + + + + + {% if user.is_staff %} diff --git a/InvenTree/users/models.py b/InvenTree/users/models.py index 3339907987..0961c6a86e 100644 --- a/InvenTree/users/models.py +++ b/InvenTree/users/models.py @@ -76,7 +76,8 @@ class RuleSet(models.Model): 'otp_totp_totpdevice', 'otp_static_statictoken', 'otp_static_staticdevice', - 'plugin_pluginconfig' + 'plugin_pluginconfig', + 'plugin_pluginsetting', ], 'part_category': [ 'part_partcategory', @@ -155,6 +156,8 @@ class RuleSet(models.Model): 'common_colortheme', 'common_inventreesetting', 'common_inventreeusersetting', + 'common_webhookendpoint', + 'common_webhookmessage', 'common_notificationentry', 'common_notificationmessage', 'company_contact', diff --git a/README.md b/README.md index 6bb4152657..324bd7a7a1 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ [![Crowdin](https://badges.crowdin.net/inventree/localized.svg)](https://crowdin.com/project/inventree) ![CI](https://github.com/inventree/inventree/actions/workflows/qc_checks.yaml/badge.svg) -InvenTree is an open-source Inventory Management System which provides powerful low-level stock control and part tracking. The core of the InvenTree system is a Python/Django database backend which provides an admin interface (web-based) and a JSON API for interaction with external interfaces and applications. +InvenTree is an open-source Inventory Management System which provides powerful low-level stock control and part tracking. The core of the InvenTree system is a Python/Django database backend which provides an admin interface (web-based) and a REST API for interaction with external interfaces and applications. InvenTree is designed to be lightweight and easy to use for SME or hobbyist applications, where many existing stock management solutions are bloated and cumbersome to use. Updating stock is a single-action process and does not require a complex system of work orders or stock transactions. diff --git a/docker/dev-config.env b/docker/dev-config.env index df65f723c8..b7ee4d8526 100644 --- a/docker/dev-config.env +++ b/docker/dev-config.env @@ -12,3 +12,6 @@ INVENTREE_DB_HOST=inventree-dev-db INVENTREE_DB_PORT=5432 INVENTREE_DB_USER=pguser INVENTREE_DB_PASSWORD=pgpassword + +# Enable plugins? +INVENTREE_PLUGINS_ENABLED=False diff --git a/docker/prod-config.env b/docker/prod-config.env index 55d28e2f96..a69fa10d2a 100644 --- a/docker/prod-config.env +++ b/docker/prod-config.env @@ -14,3 +14,6 @@ INVENTREE_DB_HOST=inventree-db INVENTREE_DB_PORT=5432 INVENTREE_DB_USER=pguser INVENTREE_DB_PASSWORD=pgpassword + +# Enable plugins? +INVENTREE_PLUGINS_ENABLED=False
{% trans "Server is deployed using docker" %}
{% trans "Plugin Support" %} + {% plugins_enabled as p_en %} + {% if p_en %} + {% trans "Plugin support enabled" %} + {% else %} + {% trans "Plugin support disabled" %} + {% endif %} +